DaveTaylor
Original plakat- 6. november 2007
- Aberdeenshire, Skotland
- 25. januar 2010
Hjælp? lol
iShater
- 13. august 2002
- Chicagoland
- 25. januar 2010
stanl8
- 24. december 2009
- Manchester, Storbritannien
- 25. januar 2010
return ('' + BMI);
Det vil sige, at '+'-operatoren udfører sammenkædning.
For det andet forstår jeg ikke, hvornår disse if-sætninger nogensinde vil blive eksekveret, fordi du har en retursætning ovenfor, som altid vil udføres D
DaveTaylor
Original plakat- 6. november 2007
- Aberdeenshire, Skotland
- 25. januar 2010
iShater sagde: Kan du sende den faktiske fejl? Hvorfor er din returopgørelse før slutningen af din metode? Klik for at udvide...
Den faktiske fejl er dobbelt, kan ikke afreferences.
Cromulent
- 2. oktober 2006
- Landet med håb og herlighed
- 25. januar 2010
For det andet returnerer din metode en fordobling, men du forsøger at returnere en streng i dine if..else-sætninger.
For det tredje, når du kalder toString()-metoden, skal du bruge objektet Double frem for den primitive type. Så du bør erklære BMI som dobbelt (java.lang.Double) i stedet for dobbelt.
Her er et simpelt eksempel:
Kode: |_+_|
chown33
Moderator
Medarbejder- 9. august 2009
- det afgrundsdybe plan
- 25. januar 2010
DaveTaylor sagde: Den faktiske fejl er dobbelt, kan ikke afvises. Klik for at udvide...
For det første kan du ikke gøre dette:
Kode: |_+_|
fordi BMI er deklareret som dobbelt , den primitive type. Java udfører ikke autoboxing i denne situation, som jeg husker det.
Hvis BMI blev erklæret som Dobbelt , indpakningsklassen for den primitive type, så virker det måske...
Bortset fra at du ikke kan gøre dette:
Kode: |_+_|
fordi Java ikke automatisk tilføjer ()'er til dig. Hvis du vil kalde toString-metoden på et objekt, skal du skrive den som en metodekald:
Kode: |_+_|
Hvis du ikke bruger et selvstudie eller en bog, burde du virkelig være det.
lee1210
- 10. januar 2005
- Dallas, TX
- 25. januar 2010
-Læs C
cx300
- 12. september 2008
- Clermont, FL
- 25. januar 2010
Kode: |_+_|
chown33
Moderator
Medarbejder- 9. august 2009
- det afgrundsdybe plan
- 25. januar 2010
cx300 sagde: Min java er lidt rusten, men det burde være rigtigt...
Kode: |_+_| Klik for at udvide...
Når beregningen er (vægt/(masse * masse)) uden andre koefficienter, er højdeenhederne meter og masseenhederne (vægt) kilogram. Hvis højden kun kan antage heltal meter (1, 2, 3), har du et alvorligt præcisionsproblem.
http://en.wikipedia.org/wiki/Body_mass_index
Disse typer vil heller aldrig give nogen brøkværdi i resultatet, fordi beregningen udføres udelukkende i heltalsaritmetik (dvs. trunkeringsdivision), så konverteres heltalsresultatet til det dobbelte. Ønsker man dobbeltregning med mulighed for brøkdel, skal mindst én operand være af typen dobbelt.
Jeg tror ikke, at dette problem er unikt for Java. Du ville have lignende problemer i C, som har lignende regler for heltal og dobbelt aritmetik.
Populære Indlæg