DaveTaylor
Poster original- 6 noiembrie 2007
- Aberdeenshire, Scoția
- 25 ianuarie 2010
Ajutor? laugh out Loud
iShater
- 13 august 2002
- Chicagoland
- 25 ianuarie 2010
stanl8
- 24 decembrie 2009
- Manchester, Marea Britanie
- 25 ianuarie 2010
întoarcere ('' + IMC);
Adică, operatorul „+” va efectua concatenarea.
În al doilea rând, nu înțeleg când vor fi executate acele instrucțiuni if, deoarece aveți o instrucțiune return mai sus care se va executa întotdeauna D
DaveTaylor
Poster original- 6 noiembrie 2007
- Aberdeenshire, Scoția
- 25 ianuarie 2010
iShater a spus: Puteți posta eroarea reală? De ce declarația dvs. de returnare este înainte de sfârșitul metodei dvs.? Faceți clic pentru a extinde...
Eroarea reală este dublă nu poate fi dereferentă.
Cromulent
- 2 octombrie 2006
- Țara Speranței și a Gloriei
- 25 ianuarie 2010
În al doilea rând, metoda dvs. returnează un dublu, dar încercați să returnați un șir în instrucțiunile if.. else.
În al treilea rând, atunci când apelați metoda toString() trebuie să utilizați obiectul Double mai degrabă decât tipul primitiv. Deci, ar trebui să declarați IMC ca dublu (java.lang.Double) și nu dublu.
Iată un exemplu simplu:
Cod: |_+_|
chown33
Moderator
Membru al personalului- 9 august 2009
- planul abisal
- 25 ianuarie 2010
DaveTaylor a spus: Eroarea reală este dublă nu poate fi anulată de referință. Faceți clic pentru a extinde...
În primul rând, nu poți face asta:
Cod: |_+_|
deoarece IMC este declarat ca dubla , tipul primitiv. Java nu efectuează autoboxing în această situație, după cum îmi amintesc.
Dacă IMC ar fi declarat ca Dubla , clasa wrapper pentru tipul primitiv, atunci ar putea funcționa...
Cu excepția faptului că nu poți face asta:
Cod: |_+_|
deoarece Java nu adaugă automat () pentru tine. Dacă doriți să invocați metoda toString pe un obiect, trebuie să o scrieți ca invocare a unei metode:
Cod: |_+_|
Dacă nu folosești un tutorial sau o carte, chiar ar trebui să o faci.
lee1210
- 10 ianuarie 2005
- Dallas, TX
- 25 ianuarie 2010
-Citit C
cx300
- 12 septembrie 2008
- Clermont, FL
- 25 ianuarie 2010
Cod: |_+_|
chown33
Moderator
Membru al personalului- 9 august 2009
- planul abisal
- 25 ianuarie 2010
cx300 a spus: Java-ul meu este puțin ruginit, dar ar trebui să fie corect...
Cod: |_+_| Faceți clic pentru a extinde...
Când calculul este (greutate/(masă * masă)) fără alți coeficienți, unitățile de înălțime sunt metri și unitățile de masă (greutate) sunt kilograme. Dacă înălțimea poate lua doar metri întregi (1, 2, 3), aveți o problemă serioasă de precizie.
http://en.wikipedia.org/wiki/Body_mass_index
De asemenea, aceste tipuri nu vor produce niciodată nicio valoare fracțională în rezultat, deoarece calculul se efectuează în întregime în aritmetică întregi (adică diviziune trunchiată), apoi rezultatul întreg este convertit în dublu. Dacă se dorește un calcul dublu cu posibilitatea unei părți fracționale, cel puțin un operand trebuie să fie de tip double.
Nu cred că această problemă este unică pentru Java. Ai avea probleme similare în C, care are reguli similare pentru aritmetica întregi și duble.
Posturi Populare