DaveTaylor
Originalaffisch- 6 november 2007
- Aberdeenshire, Skottland
- 25 januari 2010
Hjälp? LOL
iShater
- 13 augusti 2002
- Chicagoland
- 25 januari 2010
stanl8
- 24 december 2009
- Manchester, Storbritannien
- 25 januari 2010
return ('' + BMI);
Det vill säga, '+'-operatorn kommer att utföra sammanlänkning.
För det andra, jag förstår inte när dessa if-satser någonsin kommer att köras eftersom du har en retursats ovan som alltid kommer att köras D
DaveTaylor
Originalaffisch- 6 november 2007
- Aberdeenshire, Skottland
- 25 januari 2010
iShater sa: Kan du lägga upp själva felet? Varför är ditt returutdrag före slutet av din metod? Klicka för att expandera...
Det faktiska felet är dubbelt kan inte avläsas.
Cromulent
- 2 oktober 2006
- Hoppets och ärans land
- 25 januari 2010
För det andra returnerar din metod en dubbel men du försöker returnera en sträng i dina if.. else-satser.
För det tredje när du anropar metoden toString() måste du använda objektet Double istället för den primitiva typen. Så du bör deklarera BMI som dubbel (java.lang.Double) snarare än dubbel.
Här är ett enkelt exempel:
Kod: |_+_|
chown33
Moderator
Anställd- 9 augusti 2009
- det avgrundsdjupa planet
- 25 januari 2010
DaveTaylor sa: Det faktiska felet är dubbelt kan inte avläsas. Klicka för att expandera...
För det första kan du inte göra detta:
Kod: |_+_|
eftersom BMI deklareras som dubbel , den primitiva typen. Java utför inte autoboxning i den här situationen, som jag minns.
Om BMI deklarerades som Dubbel , omslagsklassen för den primitiva typen, då kanske det fungerar...
Förutom att du inte kan göra detta:
Kod: |_+_|
eftersom Java inte automatiskt lägger till () för dig. Om du vill anropa toString-metoden på ett objekt, måste du skriva den som en metodanrop:
Kod: |_+_|
Om du inte använder en handledning eller en bok borde du verkligen vara det.
lee1210
- 10 januari 2005
- Dallas, TX
- 25 januari 2010
-Läsa C
cx300
- 12 september 2008
- Clermont, FL
- 25 januari 2010
Kod: |_+_|
chown33
Moderator
Anställd- 9 augusti 2009
- det avgrundsdjupa planet
- 25 januari 2010
cx300 sa: Min java är lite rostig men det här borde vara rätt...
Kod: |_+_| Klicka för att expandera...
När beräkningen är (vikt/(massa * massa)) utan andra koefficienter är höjdenheterna meter och massenheter (vikt) kilogram. Om höjden bara kan ta heltalsmeter (1, 2, 3) har du ett allvarligt precisionsproblem.
http://en.wikipedia.org/wiki/Body_mass_index
Dessa typer kommer heller aldrig att producera något bråktal i resultatet, eftersom beräkningen utförs helt i heltalsaritmetik (dvs trunkeringsdivision), då konverteras heltalsresultatet till dubbelt. Om du vill ha en dubbelberäkning med möjlighet till en bråkdel måste minst en operand vara av typen dubbel.
Jag tror inte att det här problemet är unikt för Java. Du skulle ha liknande problem i C, som har liknande regler för heltal och dubbel aritmetik.
Populära Inlägg