Dave Taylor
Oryginalny plakat- 6 listopada 2007
- Aberdeenshire, Szkocja
- 25 stycznia 2010
Pomoc? kupa śmiechu
iShater
- 13 sierpnia 2002
- Chicagoland
- 25 stycznia 2010
stanl8
- 24 grudnia 2009
- Manchester, Wielka Brytania
- 25 stycznia 2010
powrót ('' + BMI);
Oznacza to, że operator „+” wykona konkatenację.
Po drugie, nie rozumiem, kiedy te instrukcje if zostaną kiedykolwiek wykonane, ponieważ powyżej znajduje się instrukcja return, która zawsze zostanie wykonana D
Dave Taylor
Oryginalny plakat- 6 listopada 2007
- Aberdeenshire, Szkocja
- 25 stycznia 2010
iShater powiedział: Czy możesz opublikować rzeczywisty błąd? Dlaczego twoje oświadczenie zwrotne jest przed końcem twojej metody? Kliknij aby rozszerzyć...
Rzeczywisty błąd jest podwójny, nie można go wyłuskać.
Cromulent
- 2 paź 2006
- Kraina nadziei i chwały
- 25 stycznia 2010
Po drugie, Twoja metoda zwraca double, ale próbujesz zwrócić ciąg znaków w swoich instrukcjach if.. else.
Po trzecie, podczas wywoływania metody toString() musisz użyć obiektu Double, a nie typu pierwotnego. Dlatego powinieneś zadeklarować BMI jako Double (java.lang.Double), a nie jako double.
Oto prosty przykład:
Kod: |__+_|
chown33
Moderator
Pracownik- 9 sierpnia 2009
- Płaszczyzna Otchłani
- 25 stycznia 2010
DaveTaylor powiedział: rzeczywisty błąd jest podwójny, nie można go wyłuskać. Kliknij aby rozszerzyć...
Po pierwsze, nie możesz tego zrobić:
Kod: |__+_|
ponieważ BMI jest deklarowane jako podwójnie , typ pierwotny. Java nie wykonuje w tej sytuacji autoboxingu, o ile pamiętam.
Jeśli BMI zadeklarowano jako Podwójnie , klasa opakowująca dla typu pierwotnego, to może zadziałać...
Tyle że nie możesz tego zrobić:
Kod: |__+_|
ponieważ Java nie dodaje automatycznie () za Ciebie. Jeśli chcesz wywołać metodę toString na obiekcie, musisz napisać ją jako wywołanie metody:
Kod: |__+_|
Jeśli nie korzystasz z samouczka lub książki, naprawdę powinieneś.
lee1210
- 10 stycznia 2005 r.
- Dallas, Teksas
- 25 stycznia 2010
-Czytać C
cx300
- 12 września 2008 r.
- Clermont, Floryda
- 25 stycznia 2010
Kod: |__+_|
chown33
Moderator
Pracownik- 9 sierpnia 2009
- Płaszczyzna Otchłani
- 25 stycznia 2010
cx300 powiedział: Moja java jest trochę zardzewiała, ale to powinno być w porządku...
Kod: |__+_| Kliknij aby rozszerzyć...
W przypadku obliczenia (waga/(masa * masa)) bez innych współczynników, jednostkami wzrostu są metry, a jednostkami masy (masy) są kilogramy. Jeśli wysokość może przyjmować tylko metry całkowite (1, 2, 3), masz poważny problem z precyzją.
http://en.wikipedia.org/wiki/Body_mass_index
Ponadto te typy nigdy nie dadzą w wyniku żadnej wartości ułamkowej, ponieważ obliczenia są przeprowadzane w całości w arytmetyce liczb całkowitych (tj. Dzielenie obcinające), a następnie wynik liczb całkowitych jest konwertowany na liczbę podwojoną. Jeśli chcesz wykonać podwójne obliczenie z możliwością części ułamkowej, co najmniej jeden operand musi być typu double.
Nie sądzę, że ten problem dotyczy wyłącznie Javy. Miałbyś podobne problemy w C, które ma podobne zasady dla arytmetyki liczb całkowitych i podwójnych.
Popularne Wiadomości