Java Switch Double Problemi Hk.
-
Merhaba mürid(e)ler,
Üniversite birinci sınıf bir tanıdığım basit bir problem ile karşılaşmış, Java hakkında hiçbir fikrim olmadığı için kendisine yardımcı olamadım.
İlgili kodlar için: https://pastebin.pl/view/3b4cc9d0
Karşılaştığı hata: https://hizliresim.com/K2a2Lj
if ile yapmak istememiş, nextDouble ile yapmak istiyor fakat beceremiyor. BMI değerinde double olarak çıktı vermiyormuş.
burada nasıl bir yol izlemeli birinci sınıf öğrencisine anlatabileceğimiz şekilde bir örnek kod parçası ya da direkt açıklama satırları ile mevcut kodlar üzerinde değişiklik yapabilecek biri var mıdı? -
Formüle göre sonuç doğru çıkmış
90 / (1.9 * 1.9) = 90 / 3.61 = 24 felan filan.
Neresi hatalı onu anlayamadım.
-
-
case (18.5<BMI<25)
javada bu sekilde koşul yazılabiliyor mu ya ? benim ide direkt hata verdi ??
case(bmi > 18.5 && bmi < 25)
boyle bi denesene
-
-
ontedi bunu yazdı
Formüle göre sonuç doğru çıkmış
90 / (1.9 * 1.9) = 90 / 3.61 = 24 felan filan.
Neresi hatalı onu anlayamadım.
alttaki switch hic calismiyo :P
-
ontedi bunu yazdı
Formüle göre sonuç doğru çıkmış
90 / (1.9 * 1.9) = 90 / 3.61 = 24 felan filan.
Neresi hatalı onu anlayamadım.
24.xxxxxx şeklinde devam ediyor 24.x olmuyor mesela.
-
yolbulucu bunu yazdıontedi bunu yazdı
Formüle göre sonuç doğru çıkmış
90 / (1.9 * 1.9) = 90 / 3.61 = 24 felan filan.
Neresi hatalı onu anlayamadım.
alttaki switch hic calismiyo :P
valla ben de hiç bilmiyorum, arkadaşa ilettim durumu :)
-
ershn bunu yazdıontedi bunu yazdı
Formüle göre sonuç doğru çıkmış
90 / (1.9 * 1.9) = 90 / 3.61 = 24 felan filan.
Neresi hatalı onu anlayamadım.
24.xxxxxx şeklinde devam ediyor 24.x olmuyor mesela.
System.out.printf("%.2f", bmi);
-
İşyeri ağında hızlıresim engelli olduğu için hata mesajını göremiyorum ama kodlara bakınca 2 önemli yanlış görüyorum hocam.
1 - Java'da switch-case double ile çalışmaz. primitive int, byte, short, char tiplerinden biri ya da Integer, Byte, Short ya da Character ile çalışabilir. Bunlara ek olarak Enum ya da Java 7 ve sonrası bir versiyon kullanıyorsa String ile de çalışabilir.
2- case'lerin her birinde verilen değer switch içinde verilen değişkenin değerine eşit mi diye kontrol edilir. Oraya şart yazamazsın. Yazarsan örneğin (BMI<16) işleminin sonucu boolean bir değerdir ve kod derlenmez. Çünkü yukarıdaki tiplerden biri değil.
Bu tür bir problemin çözümü için maalesef if-else if kullanmak gerek. switch-case bu tür problemlerin çözümü için uygun değil.
Detay için: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
-
JPriest bunu yazdı
İşyeri ağında hızlıresim engelli olduğu için hata mesajını göremiyorum ama kodlara bakınca 2 önemli yanlış görüyorum hocam.
1 - Java'da switch-case double ile çalışmaz. primitive int, byte, short, char tiplerinden biri ya da Integer, Byte, Short ya da Character ile çalışabilir. Bunlara ek olarak Enum ya da Java 7 ve sonrası bir versiyon kullanıyorsa String ile de çalışabilir.
2- case'lerin her birinde verilen değer switch içinde verilen değişkenin değerine eşit mi diye kontrol edilir. Oraya şart yazamazsın. Yazarsan örneğin (BMI<16) işleminin sonucu boolean bir değerdir ve kod derlenmez. Çünkü yukarıdaki tiplerden biri değil.
Bu tür bir problemin çözümü için maalesef if-else if kullanmak gerek. switch-case bu tür problemlerin çözümü için uygun değil.
Detay için: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
hocam bilgiler için çok teşekkür ederim, arkadaşa iletiyorum.
-
JPriest bunu yazdı
1 - Java'da switch-case double ile çalışmaz. primitive int, byte, short, char tiplerinden biri ya da Integer, Byte, Short ya da Character ile çalışabilir. Bunlara ek olarak Enum ya da Java 7 ve sonrası bir versiyon kullanıyorsa String ile de çalışabilir.
Dahada genişleteyim, hiç bir dilde floating-point (noktalı) değerler döngülerde kullanılmaz. Çünkü floating-point değerlerin kesin karşılıkları yoktur, yaklaşık değerleri vardır. Bu nedenle karşılaştırmalarda da sorunlar çıkartır. uzun hikaye...
Örnek;
for (float i = 1f; i <= 15f; i += 0.2f)
{ Console.WriteLine(i); } -
cukurova bunu yazdıJPriest bunu yazdı
1 - Java'da switch-case double ile çalışmaz. primitive int, byte, short, char tiplerinden biri ya da Integer, Byte, Short ya da Character ile çalışabilir. Bunlara ek olarak Enum ya da Java 7 ve sonrası bir versiyon kullanıyorsa String ile de çalışabilir.
Dahada genişleteyim, hiç bir dilde floating-point (noktalı) değerler döngülerde kullanılmaz. Çünkü floating-point değerlerin kesin karşılıkları yoktur, yaklaşık değerleri vardır. Bu nedenle karşılaştırmalarda da sorunlar çıkartır. uzun hikaye...
Örnek;
for (float i = 1f; i <= 15f; i += 0.2f)
{ Console.WriteLine(i); }Bugün de birşey öğrendim. Güne puanım 10/10
---
pythonda ne hata veriyor acaba diye merak edenlere amme hizmeti:
KOD:
for x in range(10.5):
print(x)HATA:
Traceback (most recent call last):
NoktaliVirgul tarafından 26/Oca/21 09:20 tarihinde düzenlenmiştir
File "<string>", line 1, in <module>
TypeError: 'float' object cannot be interpreted as an integer