Başka

Mac [Java] çift başvurusu kaldırılamaz

NS

Dave Taylor

Orijinal afiş
6 Kasım 2007
Aberdeenshire, İskoçya
  • 25 Oca 2010
Kod: |_+_|
Yardım? çok komik

iShater

13 Ağu 2002


Chicagoland
  • 25 Oca 2010
Gerçek hatayı yazabilir misiniz? Dönüş ifadeniz neden yönteminizin bitiminden önce? S

stanl8

24 Aralık 2009
Manchester, Birleşik Krallık
  • 25 Oca 2010
Öncelikle denemelisin
dönüş ('' + BMI);
Yani, '+' operatörü birleştirme gerçekleştirecektir.

İkincisi, bu if ifadelerinin ne zaman yürütüleceğini anlamıyorum çünkü yukarıda her zaman yürütülecek bir return deyiminiz var. NS

Dave Taylor

Orijinal afiş
6 Kasım 2007
Aberdeenshire, İskoçya
  • 25 Oca 2010
iShater dedi ki: Asıl hatayı gönderebilir misiniz? Dönüş ifadeniz neden yönteminizin bitiminden önce? Genişletmek için tıklayın...

Gerçek hata double is referansı kaldırılamaz.

kromülent

2 Ekim 2006
Umut ve Zafer Ülkesi
  • 25 Oca 2010
Her şeyden önce, if.. else ifadelerinize basmadan önce geri dönersiniz, yani asla çağrılmayacaklar.

İkincisi, yönteminiz bir çift döndürür, ancak if.. else ifadelerinizde bir dize döndürmeye çalışıyorsunuz.

Üçüncü olarak, toString() yöntemini çağırırken, ilkel tür yerine Double nesnesini kullanmanız gerekir. Bu yüzden BMI'yi double yerine Double (java.lang.Double) olarak beyan etmelisiniz.

İşte basit bir örnek:

Kod: |_+_|

chown33

moderatör
Personel
9 Ağu 2009
Abismal Uçak
  • 25 Oca 2010
DaveTaylor dedi ki: Gerçek hata double, referans alınamaz. Genişletmek için tıklayın...

İlk olarak, bunu yapamazsınız:
Kod: |_+_|
BMI olarak bildirildiği için çift , ilkel tür. Java, hatırladığım kadarıyla bu durumda otomatik kutulama yapmıyor.

BMI olarak ilan edilirse Çift , ilkel tür için sarmalayıcı sınıfı, o zaman işe yarayabilir ...

Bunu yapamazsınız dışında:
Kod: |_+_|
çünkü Java sizin için ()'leri otomatik olarak eklemez. Bir nesne üzerinde toString yöntemini çağırmak istiyorsanız, onu bir yöntem çağrısı olarak yazmanız gerekir:
Kod: |_+_|
Bir öğretici veya kitap kullanmıyorsanız, gerçekten kullanmalısınız.

Lee1210

10 Oca 2005
Dallas, Teksas
  • 25 Oca 2010
Java.lang.String'in valueOf(double) yönteminin kullanılmasını önererek şimdiye kadar yapılan iyi gözlemlere eklemek istedim. Bunu çalıştırabilir ve bir String geri alabilirsiniz. String + double operatörünü kullanmak da iyi sonuç verir, ancak tüm istediğiniz bir double'ın String temsiliyse gerekli değildir.

-Okumak C

cx300

12 Eylül 2008
Clermont, Florida
  • 25 Oca 2010
Java'm biraz paslı ama bu doğru olmalı ...

Kod: |_+_|

chown33

moderatör
Personel
9 Ağu 2009
Abismal Uçak
  • 25 Oca 2010
cx300 dedi ki: Java'm biraz paslı ama bu doğru olmalı...

Kod: |_+_| Genişletmek için tıklayın...

Hesaplama (ağırlık/(kütle * kütle)) olduğunda, başka katsayılar olmadan, yükseklik birimleri metre, kütle (ağırlık) birimleri ise kilogramdır. Yükseklik sadece tamsayılı metre (1, 2, 3) alabiliyorsa, ciddi bir hassasiyet probleminiz var demektir.

http://en.wikipedia.org/wiki/Body_mass_index

Ayrıca, bu türler hiçbir zaman sonuçta herhangi bir kesirli değer üretmeyecektir, çünkü hesaplama tamamen tamsayı aritmetiğinde (yani, budanan bölme) yapılır, ardından tamsayı sonucu ikiye dönüştürülür. Kesirli kısım olasılığı ile ikili bir hesaplama istiyorsanız, en az bir işlenen double türünde olmalıdır.

Bu sorunun Java'ya özgü olduğunu düşünmüyorum. Tamsayı ve çift aritmetik için benzer kuralları olan C'de de benzer problemler yaşarsınız.