DaveTaylor
Originalplakat- 6. November 2007
- Aberdeenshire, Schottland
- 25.01.2010
Hilfe? lol
iShater
- 13. August 2002
- Chicagoland
- 25.01.2010
stanl8
- 24. Dezember 2009
- Manchester, Großbritannien
- 25.01.2010
zurück ('' + BMI);
Das heißt, der '+'-Operator führt eine Verkettung durch.
Zweitens verstehe ich nicht, wann diese if-Anweisungen jemals ausgeführt werden, weil Sie darüber eine return-Anweisung haben, die immer ausgeführt wird D
DaveTaylor
Originalplakat- 6. November 2007
- Aberdeenshire, Schottland
- 25.01.2010
iShater sagte: Können Sie den tatsächlichen Fehler posten? Warum steht Ihre return-Anweisung vor dem Ende Ihrer Methode? Zum erweitern klicken...
Der tatsächliche Fehler ist doppelt und kann nicht dereferenziert werden.
Cromulent
- 2. Okt. 2006
- Das Land der Hoffnung und des Ruhms
- 25.01.2010
Zweitens gibt Ihre Methode ein Double zurück, aber Sie versuchen, einen String in Ihren if.. else-Anweisungen zurückzugeben.
Drittens müssen Sie beim Aufrufen der Methode toString() das Objekt Double anstelle des primitiven Typs verwenden. Sie sollten den BMI also als Double (java.lang.Double) und nicht als Double deklarieren.
Hier ist ein einfaches Beispiel:
Code: |_+_|
chown33
Moderator
Mitarbeiter- 9. August 2009
- die abgründige Ebene
- 25.01.2010
DaveTaylor sagte: Der tatsächliche Fehler ist doppelt und kann nicht dereferenziert werden. Zum erweitern klicken...
Erstens können Sie dies nicht tun:
Code: |_+_|
weil BMI deklariert ist als doppelt , der primitive Typ. Java führt in dieser Situation kein Autoboxing durch, soweit ich mich erinnere.
Wenn BMI deklariert würde als Doppelt , die Wrapper-Klasse für den primitiven Typ, dann könnte es funktionieren...
Außer dass Sie dies nicht tun können:
Code: |_+_|
weil Java () nicht automatisch für Sie hinzufügt. Wenn Sie die toString-Methode für ein Objekt aufrufen möchten, müssen Sie sie als Methodenaufruf schreiben:
Code: |_+_|
Wenn Sie kein Tutorial oder Buch verwenden, sollten Sie es wirklich sein.
lee1210
- 10. Januar 2005
- Dallas, TX
- 25.01.2010
-Lesen C
cx300
- 12.09.2008
- Clermont, FL
- 25.01.2010
Code: |_+_|
chown33
Moderator
Mitarbeiter- 9. August 2009
- die abgründige Ebene
- 25.01.2010
cx300 sagte: Mein Java ist ein wenig eingerostet, aber das sollte richtig sein ...
Code: |_+_| Zum erweitern klicken...
Wenn die Berechnung (Gewicht/(Masse * Masse)) ohne andere Koeffizienten ist, sind die Höheneinheiten Meter und die Masseneinheiten (Gewicht) Kilogramm. Wenn die Höhe nur ganzzahlige Meter (1, 2, 3) annehmen kann, haben Sie ein ernsthaftes Präzisionsproblem.
http://en.wikipedia.org/wiki/Body_mass_index
Außerdem werden diese Typen niemals einen Bruchwert im Ergebnis erzeugen, da die Berechnung vollständig in ganzzahliger Arithmetik (d. h. abschneidender Division) ausgeführt wird, dann wird das ganzzahlige Ergebnis in Double umgewandelt. Wenn Sie eine Double-Berechnung mit der Möglichkeit eines Bruchteils wünschen, muss mindestens ein Operand vom Typ double sein.
Ich glaube nicht, dass dieses Problem nur bei Java auftritt. Sie hätten ähnliche Probleme in C, das ähnliche Regeln für Integer- und Double-Arithmetik hat.
Beliebte Beiträge