Çözüldü Java'da int ve long fark etmiyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

godofwarfanno1

Decapat
Katılım
2 Aralık 2018
Mesajlar
42
Aşağdaki kodu long ile çalıştırdığımda da int ile çalıştırdığımda da aynı hanede bu sayı uzun diyor.

Java:
public class Main {

public static void main(String[] args) {

long number = 9008740991;

boolean isPrime = false;

for (int i = 2; i < number; i += 1) {
if (number % 2 == 0) {

isPrime = true;

}
if (isPrime = true) {
}
}

boolean a = false;
for (int i = 3; i < number; i += 1) {
if (number % 3 == 0) {

a = true;

}
if (a = true) {
}
}

boolean b = false;

for (int i = 5; i < number; i += 1) {
if (number % 5 == 0) {

b = true;

}
if (b = true) {
}
}
boolean c = false;
for (int i = 7; i < number; i += 1) {
if (number % 7 == 0) {

c = true;

}
if (c = true) {
}
}

if (isPrime & a & b & c == true) {
System.out.println(number + " asal değildir.");

} else {

System.out.println(number + " asaldır.");
}

}
}
 
Son düzenleyen: Moderatör:
Çözüm
Sayının sonuna "L" koyar mısın? Yani long number = 9008740991; yerine long number = 9008740991L; yap.
Burada öyle demişler. Neden böyle olduğunu bilmiyorum ama anlaşılan long değerler için L koymak gerekiyor.

Ben de başta söylenen döngü olayı ile alakalı olduğunu düşündüm. Ama hatayı long değişkenin tanımlandığı satır veriyor. Döngüdeki değişkeni long olarak tanımlamak bir şey değiştirmedi.
Kod:
long number = 9008740991;

for (int i = 2; i < number; i += 1)

loop icindeki variable int cunku, yazdigin hic bir programda kodun hic bir yerinde int ile long comparison'i yapmamalisin. Ayni tipleri kiyaslamayacaksan static typed dil kullanmanin mantigi kalmiyor, python ile yaz.
 
Programınızda mantıksal hata var:


Kod:
for (int i = 2; i < number; i += 1)


i<number demişsiniz ve int değer olan i değişkenini long tipi değer olan number değişkenine kadar arttırmışsınız.
 
Sayının sonuna "L" koyar mısın? Yani long number = 9008740991; yerine long number = 9008740991L; yap.
Burada öyle demişler. Neden böyle olduğunu bilmiyorum ama anlaşılan long değerler için L koymak gerekiyor.

Ben de başta söylenen döngü olayı ile alakalı olduğunu düşündüm. Ama hatayı long değişkenin tanımlandığı satır veriyor. Döngüdeki değişkeni long olarak tanımlamak bir şey değiştirmedi.
 
Çözüm
Loopların içindeki intleri değiştirmeyi unutmuşum.onları değiştirdikten sonra da bir şey değişmedi ama sayının sonuna l koyunca düzeldi.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…