DaveTaylor
Original plakat- 6. november 2007
- Aberdeenshire, Skottland
- 25. januar 2010
Hjelp? lol
iShater
- 13. august 2002
- Chicagoland
- 25. januar 2010
stanl8
- 24. desember 2009
- Manchester, Storbritannia
- 25. januar 2010
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
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
-Lese C
cx300
- 12. september 2008
- Clermont, FL
- 25. januar 2010
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.
Populære Innlegg