Java Harmonik seriler nasıl yapılır?

Mute and X

Hectopat
Katılım
27 Haziran 2022
Mesajlar
240
Çözümler
4
Ekran görüntüsü_20230701_202339.png


Seçtiğim sayıya kadar 1+1/2+1/3 şeklinde toplanmasını istiyorum. 19. satıra kadar gayet normal çalışıyor. Negatif sayı verdiğimde uygulama kendini kapatıyor. While kısmında ise bir sorun göremedim ama Syso'nun içine ne yazarsam yazayım herhangi bir sonuç yazdırmıyor ekrana sorun nedir?

Bir de aynı workspace içine çok fazla uygulama biriktirmek kasma yapar mı? Tek bir uygulama açık olmasına rağmen garip bir şekilde kasmaya başladı.
 
Son düzenleyen: Moderatör:
Kodu kod bloğu olarak paylaşabilir misiniz? Bu şekilde çalıştırıp test edemez ve düzenleme yapamayız.
Java:
package WhileProgram;
import java.util.Scanner;
public class WhileProgram4_Harmonik {

    public static void main(String[] args) {
    //Harmonik seri ; f(n) = 1+1/2+1/3... 1/n
    
Scanner input = new Scanner(System.in);       
int giris;
float harmonik = 1F;


System.out.println("Harmonik serinin n elemanini giriniz: ");
giris = input.nextInt();

if(giris<0) {
    System.out.println("Sectiginiz sayi 0'dan buyuk olmali");
System.exit(giris);
}

while(giris>0){
harmonik += (float)1/giris;
}
    
System.out.println(harmonik);

    
    }

}
 
Sorunun nerede olduğunu anlamadığımız durumlarda programı direkt run etmek yerine satır satır çalıştırır debug yaparız, kullandığın ide her ne ise bu işlemi o ide ile nasıl yapabileceğini internette, youtubeda vb. araştırıp öğrenmelisin. (şöyle bir örnek buldum:
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
)

Ayrıca programının düzgün çalıştığından emin olana kadar farklı farklı yerlere System.out.println eklersen ve değerleri yazdırırsan, ekrandaki çıktıya göre sorunun nerede olduğunu bulman kolaylaşır.

while(giris>0){
harmonik += (float)1/giris;
}


}[/CODE]

Bak kodundaki while döngüsünü

Java:
Scanner entera_bas = new Scanner(System.in);
while(giris>0){
System.out.println("harmonik değeri:"+harmonik);
System.out.println("1/giris değeri:" + (float)1/giris);
harmonik += (float)1/giris;
System.out.println("yeni harmonik değeri:"+harmonik);
System.out.println("bir sonraki döngüyü görmek için entera bas, sayıları kontrol et");
entera_bas.nextLine();
}

ile değiştirirsen nerede hata yaptığını görebilirsin, değişkenlerin istediğin gibi değerler alıyor mu kontrol et.
 
Son düzenleme:
Eki Görüntüle 1843403

Seçtiğim sayıya kadar 1+1/2+1/3 şeklinde toplanmasını istiyorum. 19. satıra kadar gayet normal çalışıyor. Negatif sayı verdiğimde uygulama kendini kapatıyor. While kısmında ise bir sorun göremedim ama Syso'nun içine ne yazarsam yazayım herhangi bir sonuç yazdırmıyor ekrana sorun nedir?

Bir de aynı workspace içine çok fazla uygulama biriktirmek kasma yapar mı? Tek bir uygulama açık olmasına rağmen garip bir şekilde kasmaya başladı.
Kasmasının nedeni sonsuz döngüye girmesidir.
Sorunu çözmek istiyorsan while şartını düzenlemen gerekir.

Giriş değişkeni her zaman sıfırdan büyük olduğu için while şartında kalır ve döngüyü kırılmadığı için programı kapatana kadar çalışır.

for kullanmanı tavsiye ederim.
Java:
for(int i = 1; i<=giris; i++)
{
    harmonik += i/giris;
}
 
Kasmasının nedeni sonsuz döngüye girmesidir.
Sorunu çözmek istiyorsan while şartını düzenlemen gerekir.
Yok sonsuz döngüye girdiğinde terminate ediyorum. Sonsuz döngüye girmese bile dosyalar biriktiği için kasıyor sanırım.
Syso("Yazı")
komutunu yazsam bile 1-2 saniye bekletiyor artık. Workspacemde 20'ye yakın proje var da.
 
Yok sonsuz döngüye girdiğinde terminate ediyorum. Sonsuz döngüye girmese bile dosyalar biriktiği için kasıyor sanırım.
Syso("Yazı")
komutunu yazsam bile 1-2 saniye bekletiyor artık. Workspacemde 20'ye yakın proje var da.
Nerede terminate ediyorsun? Attığın kodda, sadece giriş negatif olursa başta, işlemi terminate ediyor.
 

Technopat Haberler

Yeni konular

Geri
Yukarı