Muud

Mac [Java] topelt ei saa viiteid tühistada

D

DaveTaylor

Originaalplakat
6. november 2007
Aberdeenshire, Šotimaa
  • 25. jaanuar 2010
Kood: |_+_|
Abi? lol

iShater

13. august 2002


Chicagoland
  • 25. jaanuar 2010
Kas saate tegeliku vea postitada? Miks on teie tagastusavaldus enne teie meetodi lõppu? S

stanl8

24. detsember 2009
Manchester, Ühendkuningriik
  • 25. jaanuar 2010
Kõigepealt peaksite proovima
tagasi ('' + KMI);
See tähendab, et operaator '+' teostab konkatenatsiooni.

Teiseks, ma ei saa aru, millal need if-laused kunagi käivituvad, kuna ülal on tagastuslause, mis käivitatakse alati D

DaveTaylor

Originaalplakat
6. november 2007
Aberdeenshire, Šotimaa
  • 25. jaanuar 2010
iShater ütles: kas saate postitada tegeliku vea? Miks on teie tagastusavaldus enne teie meetodi lõppu? Klõpsake laiendamiseks...

Tegelik viga on kahekordne, seda ei saa viiteid tühistada.

Kromulentne

2. oktoober 2006
Lootuse ja hiilguse maa
  • 25. jaanuar 2010
Esiteks naasete tagasi enne, kui tabate oma if.. muidu avaldused, mis tähendab, et neile ei helistata kunagi.

Teiseks tagastab teie meetod kahekordse, kuid proovite anda stringi if.. else lausetes.

Kolmandaks tuleb meetodi toString() kutsumisel kasutada primitiivse tüübi asemel objekti Double. Seega peaksite deklareerima KMI kahekordseks (java.lang.Double), mitte kahekordseks.

Siin on lihtne näide:

Kood: |_+_|

chown33

Moderaator
Töötaja
9. august 2009
Kuristiku lennuk
  • 25. jaanuar 2010
DaveTaylor ütles: Tegelikku viga on topelt, seda ei saa viidata. Klõpsake laiendamiseks...

Esiteks ei saa te seda teha:
Kood: |_+_|
sest KMI on deklareeritud kui kahekordne , primitiivne tüüp. Minu mäletamist mööda Java selles olukorras autoboxi ei teosta.

Kui KMI oleks deklareeritud kui Kahekordne , primitiivse tüübi ümbrisklass, siis võib see toimida...

Välja arvatud see, et te ei saa seda teha:
Kood: |_+_|
sest Java ei lisa teie eest automaatselt ()-sid. Kui soovite käivitada objektil meetodi toString, peate selle kirjutama meetodi kutsena:
Kood: |_+_|
Kui te ei kasuta õpetust või raamatut, peaksite seda tõesti kasutama.

lee1210

10. jaanuar 2005
Dallas, TX
  • 25. jaanuar 2010
Tahtsin lihtsalt lisada seni tehtud headele tähelepanekutele, soovitades kasutada java.lang.Stringi valueOf(double) meetodit. Saate selle käivitada ja stringi tagasi saada. String + topeltoperaatori kasutamine töötab samuti hästi, kuid seda pole vaja, kui soovite vaid duubli stringi esitust.

- Loe C

cx300

12. september 2008
Clermont, FL
  • 25. jaanuar 2010
Minu java on veidi roostes, aga see peaks õige olema...

Kood: |_+_|

chown33

Moderaator
Töötaja
9. august 2009
Kuristiku lennuk
  • 25. jaanuar 2010
cx300 ütles: Minu Java on veidi roostes, kuid see peaks olema õige...

Kood: |_+_| Klõpsake laiendamiseks...

Kui arvutus on (kaal/(mass * mass)) ilma muude koefitsientideta, on kõrgusühikud meetrid ja massi (massi) ühikud kilogrammid. Kui kõrgus võib olla vaid täisarv meetrit (1, 2, 3), on teil tõsine täpsusprobleem.

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

Samuti ei anna need tüübid tulemuses kunagi murdarvu, kuna arvutamine toimub täielikult täisarvude aritmeetikas (st kärbitud jagamine), seejärel teisendatakse täisarv kahekordseks. Kui soovid topeltarvutust murdosa võimalusega, peab vähemalt üks operaand olema topelttüüpi.

Ma ei usu, et see probleem on ainult Java jaoks ainulaadne. Sarnased probleemid tekivad ka C-s, millel on sarnased täisarvu ja topeltaritmeetika reeglid.