DaveTaylor
Manifesto originale- 6 novembre 2007
- Aberdeenshire, Scozia
- 25 gennaio 2010
Aiuto? LOL
iShater
- 13 agosto 2002
- Chicagoland
- 25 gennaio 2010
stanl8
- 24 dicembre 2009
- Manchester, Regno Unito
- 25 gennaio 2010
ritorno ('' + BMI);
Cioè, l'operatore '+' eseguirà la concatenazione.
In secondo luogo, non capisco quando quelle istruzioni if verranno mai eseguite perché hai un'istruzione return sopra che verrà sempre eseguita D
DaveTaylor
Manifesto originale- 6 novembre 2007
- Aberdeenshire, Scozia
- 25 gennaio 2010
iShater ha detto: puoi postare l'errore effettivo? Perché la tua dichiarazione di restituzione è prima della fine del tuo metodo? Clicca per espandere...
L'errore effettivo è doppio non può essere dereferenziato.
Cromulent
- 2 ottobre 2006
- La Terra della Speranza e della Gloria
- 25 gennaio 2010
In secondo luogo il tuo metodo restituisce un double ma stai cercando di restituire una stringa nelle tue istruzioni if.. else.
In terzo luogo, quando si chiama il metodo toString() è necessario utilizzare l'oggetto Double anziché il tipo primitivo. Quindi dovresti dichiarare l'IMC come Double (java.lang.Double) anziché double.
Qui c'è un semplice esempio:
Codice: |_+_|
chown33
Moderatore
Membro dello staff- 9 agosto 2009
- il Piano Abissale
- 25 gennaio 2010
DaveTaylor ha dichiarato: L'errore effettivo è doppio non può essere dereferenziato. Clicca per espandere...
Innanzitutto, non puoi fare questo:
Codice: |_+_|
perché BMI è dichiarato come Doppio , il tipo primitivo. Java non esegue l'autoboxing in questa situazione, se ricordo bene.
Se il BMI fosse dichiarato come Doppio , la classe wrapper per il tipo primitivo, allora potrebbe funzionare...
Tranne che non puoi fare questo:
Codice: |_+_|
perché Java non aggiunge automaticamente () per te. Se vuoi invocare il metodo toString su un oggetto, devi scriverlo come invocazione del metodo:
Codice: |_+_|
Se non stai usando un tutorial o un libro, dovresti davvero esserlo.
lee1210
- 10 gennaio 2005
- Dallas, TX
- 25 gennaio 2010
-Leggi C
cx300
- 12 settembre 2008
- Clermont, Florida
- 25 gennaio 2010
Codice: |_+_|
chown33
Moderatore
Membro dello staff- 9 agosto 2009
- il Piano Abissale
- 25 gennaio 2010
cx300 ha detto: Il mio Java è un po' arrugginito ma dovrebbe essere giusto...
Codice: |_+_| Clicca per espandere...
Quando il calcolo è (peso/(massa * massa)) senza altri coefficienti, le unità di altezza sono metri e le unità di massa (peso) sono chilogrammi. Se l'altezza può assumere solo metri interi (1, 2, 3), hai un serio problema di precisione.
http://en.wikipedia.org/wiki/Body_mass_index
Inoltre, questi tipi non produrranno mai alcun valore frazionario nel risultato, poiché il calcolo viene eseguito interamente in aritmetica intera (ovvero troncando la divisione), quindi il risultato intero viene convertito in doppio. Se si vuole un calcolo doppio con possibilità di parte frazionaria, almeno un operando deve essere di tipo double.
Non credo che questo problema sia esclusivo di Java. Avresti problemi simili in C, che ha regole simili per l'aritmetica intera e doppia.
Messaggi Popolari