Drugo

Mac [Java] dvojnika ni mogoče dereferencirati

D

DaveTaylor

Originalni plakat
6. november 2007
Aberdeenshire, Škotska
  • 25. januar 2010
Koda: |_+_|
Pomoč? lol

iShater

13. avgust 2002


Chicagoland
  • 25. januar 2010
Lahko objaviš dejansko napako? Zakaj je vaša povratna izjava pred koncem vaše metode? S

stanl8

24. december 2009
Manchester, Združeno kraljestvo
  • 25. januar 2010
Najprej morate poskusiti
vrnitev ('' + BMI);
To pomeni, da bo operater '+' izvedel povezovanje.

Drugič, ne razumem, kdaj se bodo ti stavki if sploh izvajali, ker imate zgoraj stavek return, ki se bo vedno izvajal D

DaveTaylor

Originalni plakat
6. november 2007
Aberdeenshire, Škotska
  • 25. januar 2010
iShater je rekel: Ali lahko objavite dejansko napako? Zakaj je vaša povratna izjava pred koncem vaše metode? Kliknite za razširitev ...

Dejanske napake je dvojna, ni mogoče dereferencirati.

Cromulent

2. oktober 2006
Dežela upanja in slave
  • 25. januar 2010
Najprej se vrnete, preden pritisnete izjave if.. else, kar pomeni, da jih nikoli ne bodo poklicali.

Drugič, vaša metoda vrne dvojno, vendar poskušate vrniti niz v svojih izjavah if.. else.

Tretjič, ko kličete metodo toString(), morate namesto primitivnega tipa uporabiti objekt Double. Zato bi morali ITM deklarirati kot dvojno (java.lang.Double) in ne dvojno.

Tukaj je preprost primer:

Koda: |_+_|

chown33

Moderator
Osebje
9. avgust 2009
Abysmal Plane
  • 25. januar 2010
DaveTaylor je rekel: Dejanske napake je dvojna, ni mogoče dereferencirati. Kliknite za razširitev ...

Prvič, tega ne morete storiti:
Koda: |_+_|
ker je ITM deklariran kot dvojno , primitivni tip. Kot se spomnim, Java v tej situaciji ne izvaja samodejnega boksanja.

Če bi bil BMI deklariran kot Dvojni , razred ovoja za primitivni tip, potem bo morda delovalo ...

Razen tega ne morete storiti:
Koda: |_+_|
ker Java ne dodaja samodejno () namesto vas. Če želite na objektu priklicati metodo toString, jo morate napisati kot klic metode:
Koda: |_+_|
Če ne uporabljate vadnice ali knjige, bi res morali biti.

lee1210

10. januar 2005
Dallas, TX
  • 25. januar 2010
K dosedanjim dobrim opažanjem sem želel dodati le predlog za uporabo metode valueOf(double) java.lang.String. To lahko zaženete in vrnete niz. Tudi uporaba operatorja String + double deluje dobro, vendar ni potrebna, če želite le nizovno predstavitev dvojnika.

-Preberi C

cx300

12. september 2008
Clermont, FL
  • 25. januar 2010
Moja java je malo zarjavela, ampak to bi moralo biti prav...

Koda: |_+_|

chown33

Moderator
Osebje
9. avgust 2009
Abysmal Plane
  • 25. januar 2010
cx300 je rekel: Moja java je malo zarjavela, ampak to bi moralo biti prav...

Koda: |_+_| Kliknite za razširitev ...

Ko je izračun (teža/(masa * masa)) brez drugih koeficientov, so enote za višino metri, enote za maso (teža) pa kilogrami. Če lahko višina prevzame le cele metre (1, 2, 3), imate resen problem z natančnostjo.

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

Prav tako te vrste nikoli ne bodo ustvarile nobene ulomne vrednosti v rezultatu, ker se izračun izvede v celoti v celoštevilski aritmetiki (tj. skrajšano deljenje), nato se celoštevilski rezultat pretvori v dvojni. Če želite dvojni izračun z možnostjo delnega dela, mora biti vsaj en operand tipa double.

Mislim, da ta problem ni edinstven za Javo. Podobne težave bi imeli v C, ki ima podobna pravila za celoštevilsko in dvojno aritmetiko.