DaveTaylor
Původní plakát- 6. listopadu 2007
- Aberdeenshire, Skotsko
- 25. ledna 2010
Pomoc? lol
iShater
- 13. srpna 2002
- Chicagoland
- 25. ledna 2010
stanl8
- 24. prosince 2009
- Manchester, Spojené království
- 25. ledna 2010
návrat ('' + BMI);
To znamená, že operátor '+' provede zřetězení.
Za druhé, nechápu, kdy se ty příkazy if někdy provedou, protože výše máte příkaz return, který se vždy provede D
DaveTaylor
Původní plakát- 6. listopadu 2007
- Aberdeenshire, Skotsko
- 25. ledna 2010
iShater řekl: Můžete zveřejnit skutečnou chybu? Proč je váš návratový příkaz před koncem vaší metody? Kliknutím rozbalíte...
Skutečná chyba je dvojnásobná, nelze ji dereferencovat.
Cromulent
- 2. října 2006
- Země naděje a slávy
- 25. ledna 2010
Za druhé, vaše metoda vrací double, ale vy se pokoušíte vrátit řetězec ve vašich příkazech if.. else.
Za třetí, když voláte metodu toString(), musíte místo primitivního typu použít objekt Double. Takže byste měli deklarovat BMI jako Double (java.lang.Double) spíše než double.
Zde je jednoduchý příklad:
Kód: |_+_|
chown33
Moderátor
Zaměstnanec- 9. srpna 2009
- Propastná rovina
- 25. ledna 2010
DaveTaylor řekl: Skutečná chyba je dvojnásobná, nelze ji dereferencovat. Kliknutím rozbalíte...
Za prvé, nemůžete udělat toto:
Kód: |_+_|
protože BMI je deklarováno jako dvojnásobek , primitivní typ. Jak si vzpomínám, Java v této situaci neprovádí autoboxing.
Pokud by BMI bylo deklarováno jako Dvojnásobek , třída wrapper pro primitivní typ, pak by to mohlo fungovat...
Kromě toho, že nemůžete udělat toto:
Kód: |_+_|
protože Java automaticky nepřidává () za vás. Pokud chcete na objektu vyvolat metodu toString, musíte ji napsat jako vyvolání metody:
Kód: |_+_|
Pokud nepoužíváte tutoriál nebo knihu, opravdu byste měli.
lee1210
- 10. ledna 2005
- Dallas, TX
- 25. ledna 2010
-Číst C
cx300
- 12. září 2008
- Clermont, FL
- 25. ledna 2010
Kód: |_+_|
chown33
Moderátor
Zaměstnanec- 9. srpna 2009
- Propastná rovina
- 25. ledna 2010
cx300 řekl: Moje java je trochu rezavá, ale mělo by to být správné...
Kód: |_+_| Kliknutím rozbalíte...
Když je výpočet (váha/(hmotnost *hmotnost)) bez dalších koeficientů, jednotky výšky jsou metry a jednotky hmotnosti (hmotnosti) jsou kilogramy. Pokud výška může mít pouze celé metry (1, 2, 3), máte vážný problém s přesností.
http://cs.wikipedia.org/wiki/Body_mass_index
Tyto typy také nikdy neposkytnou ve výsledku žádnou zlomkovou hodnotu, protože výpočet se provádí výhradně v celočíselné aritmetice (tj. zkrácením dělení), poté se celočíselný výsledek převede na dvojnásobek. Pokud chcete dvojitý výpočet s možností zlomkové části, musí být alespoň jeden operand typu double.
Nemyslím si, že se tento problém týká pouze Javy. Podobné problémy byste měli v C, které má podobná pravidla pro celočíselnou a dvojitou aritmetiku.
Populární Příspěvky