DaveTaylor
Affiche originale- 6 novembre 2007
- Aberdeenshire, Écosse
- 25 janvier 2010
Aider? MDR
iShater
- 13 août 2002
- Chicagoland
- 25 janvier 2010
stanl8
- 24 déc. 2009
- Manchester, Royaume-Uni
- 25 janvier 2010
retour ('' + IMC);
C'est-à-dire que l'opérateur '+' effectuera la concaténation.
Deuxièmement, je ne comprends pas quand ces instructions if s'exécuteront un jour car vous avez une instruction return ci-dessus qui s'exécutera toujours ré
DaveTaylor
Affiche originale- 6 novembre 2007
- Aberdeenshire, Écosse
- 25 janvier 2010
iShater a dit : Pouvez-vous publier l'erreur réelle ? Pourquoi votre déclaration de retour est-elle avant la fin de votre méthode ? Cliquez pour agrandir...
L'erreur réelle est double ne peut pas être déréférencée.
cromulent
- 2 octobre 2006
- Le pays de l'espoir et de la gloire
- 25 janvier 2010
Deuxièmement, votre méthode renvoie un double alors que vous essayez de renvoyer une chaîne dans vos instructions if.. else.
Troisièmement, lors de l'appel de la méthode toString(), vous devez utiliser l'objet Double plutôt que le type primitif. Vous devez donc déclarer l'IMC en tant que Double (java.lang.Double) plutôt que double.
Voici un exemple simple :
Code : |_+_|
chown33
Modérateur
Membre du staff- 9 août 2009
- le plan abyssal
- 25 janvier 2010
DaveTaylor a déclaré : L'erreur réelle est double ne peut pas être déréférencée. Cliquez pour agrandir...
Tout d'abord, vous ne pouvez pas faire ceci :
Code : |_+_|
parce que l'IMC est déclaré comme double , le type primitif. Java n'effectue pas d'autoboxing dans cette situation, si je me souviens bien.
Si l'IMC était déclaré comme Double , la classe wrapper pour le type primitif, alors cela pourrait fonctionner...
Sauf que tu ne peux pas faire ça :
Code : |_+_|
car Java n'ajoute pas automatiquement les () pour vous. Si vous souhaitez invoquer la méthode toString sur un objet, vous devez l'écrire en tant qu'invocation de méthode :
Code : |_+_|
Si vous n'utilisez pas un tutoriel ou un livre, vous devriez vraiment l'être.
lee1210
- 10 janvier 2005
- Dallas, Texas
- 25 janvier 2010
-Lire C
cx300
- 12 sept. 2008
- Clermont, Floride
- 25 janvier 2010
Code : |_+_|
chown33
Modérateur
Membre du staff- 9 août 2009
- le plan abyssal
- 25 janvier 2010
cx300 a dit : Mon java est un peu rouillé mais cela devrait être correct...
Code : |_+_| Cliquez pour agrandir...
Lorsque le calcul est (poids/(masse * masse)) sans autres coefficients, les unités de hauteur sont des mètres et les unités de masse (poids) sont des kilogrammes. Si la hauteur ne peut prendre que des mètres entiers (1, 2, 3), vous avez un sérieux problème de précision.
http://en.wikipedia.org/wiki/Body_mass_index
De plus, ces types ne produiront jamais de valeur fractionnaire dans le résultat, car le calcul est effectué entièrement en arithmétique entière (c'est-à-dire en tronquant la division), puis le résultat entier est converti en double. Si vous voulez un calcul double avec possibilité de partie fractionnaire, au moins un opérande doit être de type double.
Je ne pense pas que ce problème soit propre à Java. Vous auriez des problèmes similaires en C, qui a des règles similaires pour l'arithmétique entière et double.
Articles Populaires