Annen

Mac [Java] dobbel kan ikke skilles fra

D

DaveTaylor

Original plakat
6. november 2007
Aberdeenshire, Skottland
  • 25. januar 2010
Kode: |_+_|
Hjelp? lol

iShater

13. august 2002


Chicagoland
  • 25. januar 2010
Kan du legge ut den faktiske feilen? Hvorfor er returoppgaven din før slutten av metoden din? S

stanl8

24. desember 2009
Manchester, Storbritannia
  • 25. januar 2010
Først av alt bør du prøve
return ('' + BMI);
Det vil si at '+'-operatøren vil utføre sammenkobling.

For det andre forstår jeg ikke når disse if-setningene noen gang vil utføres fordi du har en retursetning ovenfor som alltid vil utføres D

DaveTaylor

Original plakat
6. november 2007
Aberdeenshire, Skottland
  • 25. januar 2010
iShater sa: Kan du legge ut selve feilen? Hvorfor er returoppgaven din før slutten av metoden din? Klikk for å utvide...

Den faktiske feilen er dobbel kan ikke skilles fra.

Cromulent

2. oktober 2006
Landet med håp og ære
  • 25. januar 2010
Først av alt kommer du tilbake før du treffer hvis.. else-uttalelsene betyr at de aldri vil bli kalt.

For det andre returnerer metoden en dobbel, men du prøver å returnere en streng i if..else-setningene dine.

For det tredje, når du kaller toString()-metoden, må du bruke objektet Double i stedet for den primitive typen. Så du bør erklære BMI som dobbel (java.lang.Double) i stedet for dobbel.

Her er et enkelt eksempel:

Kode: |_+_|

chown33

Moderator
Betjeningen
9. august 2009
det dype planet
  • 25. januar 2010
DaveTaylor sa: Den faktiske feilen er dobbel kan ikke skilles fra. Klikk for å utvide...

For det første kan du ikke gjøre dette:
Kode: |_+_|
fordi BMI er deklarert som dobbelt , den primitive typen. Java utfører ikke autoboksing i denne situasjonen, så vidt jeg husker.

Hvis BMI ble oppgitt som Dobbelt , wrapper-klassen for den primitive typen, så kan det kanskje fungere...

Bortsett fra at du ikke kan gjøre dette:
Kode: |_+_|
fordi Java ikke automatisk legger til ()-er for deg. Hvis du vil påkalle toString-metoden på et objekt, må du skrive den som en metodeanrop:
Kode: |_+_|
Hvis du ikke bruker en opplæring eller en bok, bør du virkelig være det.

lee1210

10. januar 2005
Dallas, TX
  • 25. januar 2010
Jeg ville bare legge til de gode observasjonene som er gjort så langt ved å foreslå bruk av java.lang.Strings valueOf(double)-metoden. Du kan kjøre dette og få en String tilbake. Å bruke String + double-operatoren fungerer også fint, men er ikke nødvendig hvis alt du vil ha er String-representasjonen av en dobbel.

-Lese C

cx300

12. september 2008
Clermont, FL
  • 25. januar 2010
Java-en min er litt rusten, men dette burde være riktig...

Kode: |_+_|

chown33

Moderator
Betjeningen
9. august 2009
det dype planet
  • 25. januar 2010
cx300 sa: Java-en min er litt rusten, men dette burde være riktig...

Kode: |_+_| Klikk for å utvide...

Når beregningen er (vekt/(masse * masse)) uten andre koeffisienter, er høydeenhetene meter og masseenhetene (vekt) kilogram. Hvis høyden bare kan ta heltallsmeter (1, 2, 3), har du et alvorlig presisjonsproblem.

http://en.wikipedia.org/wiki/Body_mass_index

Disse typene kommer heller aldri til å produsere noen brøkverdi i resultatet, fordi beregningen utføres helt i heltallsaritmetikk (dvs. trunkeringsdivisjon), så blir heltallsresultatet konvertert til dobbel. Dersom du ønsker dobbeltregning med mulighet for brøkdel, må minst en operand være av typen dobbel.

Jeg tror ikke dette problemet er unikt for Java. Du vil ha lignende problemer i C, som har lignende regler for heltall og dobbel aritmetikk.