Iné

Mac [Java] double nie je možné zrušiť

D

DaveTaylor

Pôvodný plagát
6. novembra 2007
Aberdeenshire, Škótsko
  • 25. januára 2010
Kód: |_+_|
Pomoc? lol

iShater

13. august 2002


Chicagoland
  • 25. januára 2010
Môžete napísať skutočnú chybu? Prečo je váš návratový výkaz pred koncom vašej metódy? S

stanl8

24. decembra 2009
Manchester, Spojené kráľovstvo
  • 25. januára 2010
V prvom rade by ste mali vyskúšať
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
V prvom rade sa vrátite skôr, ako zadáte svoje if.. else vyhlásenia, čo znamená, že nikdy nebudú zavolaní.

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
Chcel som len doplniť doterajšie dobré postrehy tým, že som navrhol použitie metódy valueOf(double) java.lang.String. Môžete to spustiť a získať reťazec späť. Použitie operátora String + double funguje tiež dobre, ale nie je potrebné, ak všetko, čo chcete, je reprezentácia reťazca typu double.

-Čítať C

cx300

12. september 2008
Clermont, FL
  • 25. januára 2010
Moja java je trochu hrdzavá, ale malo by to byť správne...

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.