DaveTaylor
Pôvodný plagát- 6. novembra 2007
- Aberdeenshire, Škótsko
- 25. januára 2010
Pomoc? lol
iShater
- 13. august 2002
- Chicagoland
- 25. januára 2010
stanl8
- 24. decembra 2009
- Manchester, Spojené kráľovstvo
- 25. januára 2010
návrat ('' + BMI);
To znamená, že operátor „+“ vykoná zreťazenie.
Po druhé, nerozumiem, kedy sa tieto príkazy if niekedy vykonajú, pretože vyššie máte príkaz return, ktorý sa vždy vykoná D
DaveTaylor
Pôvodný plagát- 6. novembra 2007
- Aberdeenshire, Škótsko
- 25. januára 2010
iShater povedal: Môžete uverejniť skutočnú chybu? Prečo je váš návratový výkaz pred koncom vašej metódy? Kliknutím rozbalíte...
Skutočná chyba je dvojnásobná, nemožno ju dereferencovať.
Cromulent
- 2. októbra 2006
- Krajina nádeje a slávy
- 25. januára 2010
Po druhé, vaša metóda vracia double, ale vy sa pokúšate vrátiť reťazec vo svojich príkazoch if.. else.
Po tretie, pri volaní metódy toString() musíte namiesto primitívneho typu použiť objekt Double. Takže by ste mali deklarovať BMI ako dvojité (java.lang.Double), a nie ako dvojité.
Tu je jednoduchý príklad:
Kód: |_+_|
chown33
Moderátor
Zamestnanec- 9. augusta 2009
- priepastná rovina
- 25. januára 2010
DaveTaylor povedal: Skutočná chyba je dvojnásobná, nemožno ju dereferencovať. Kliknutím rozbalíte...
Po prvé, nemôžete urobiť toto:
Kód: |_+_|
pretože BMI je deklarované ako dvojitý , primitívny typ. Ako si spomínam, Java v tejto situácii nevykonáva autobox.
Ak by bolo BMI deklarované ako Dvojité , trieda wrapper pre primitívny typ, potom by to mohlo fungovať...
Okrem toho, že nemôžete urobiť toto:
Kód: |_+_|
pretože Java nepridáva automaticky () za vás. Ak chcete na objekte vyvolať metódu toString, musíte ju napísať ako vyvolanie metódy:
Kód: |_+_|
Ak nepoužívate návod alebo knihu, naozaj by ste mali.
lee1210
- 10. januára 2005
- Dallas, TX
- 25. januára 2010
-Čítať C
cx300
- 12. september 2008
- Clermont, FL
- 25. januára 2010
Kód: |_+_|
chown33
Moderátor
Zamestnanec- 9. augusta 2009
- priepastná rovina
- 25. januára 2010
cx300 povedal: Moja java je trochu hrdzavá, ale malo by to byť správne...
Kód: |_+_| Kliknutím rozbalíte...
Keď je výpočet (hmotnosť/(hmotnosť * hmotnosť)) bez iných koeficientov, jednotky výšky sú metre a jednotky hmotnosti (hmotnosti) sú kilogramy. Ak výška môže naberať iba celé metre (1, 2, 3), máte vážny problém s presnosťou.
http://en.wikipedia.org/wiki/Body_mass_index
Tieto typy tiež nikdy nevytvoria vo výsledku žiadnu zlomkovú hodnotu, pretože výpočet sa vykonáva výlučne celočíselnou aritmetikou (t. j. skrátením delenia), potom sa celočíselný výsledok prevedie na dvojnásobok. Ak chcete dvojitý výpočet s možnosťou zlomkovej časti, aspoň jeden operand musí byť typu double.
Nemyslím si, že tento problém je jedinečný pre Javu. Podobné problémy by ste mali v jazyku C, ktorý má podobné pravidlá pre celé číslo a dvojitú aritmetiku.
Populárne Príspevky