Ostalo

Mac [Java] double ne može se dereferencirati

D

DaveTaylor

Originalni poster
6. studenog 2007
Aberdeenshire, Škotska
  • 25. siječnja 2010
Šifra: |_+_|
Pomozite? lol

iShater

13. kolovoza 2002


Chicagoland
  • 25. siječnja 2010
Možete li objaviti stvarnu grešku? Zašto je vaša povratna izjava prije kraja vaše metode? S

stanl8

24. prosinca 2009
Manchester, UK
  • 25. siječnja 2010
Prije svega treba probati
povratak ('' + BMI);
Odnosno, operator '+' će izvesti konkatenaciju.

Drugo, ne razumijem kada će se ti if izrazi ikad izvršiti jer iznad imate naredbu return koja će se uvijek izvršiti D

DaveTaylor

Originalni poster
6. studenog 2007
Aberdeenshire, Škotska
  • 25. siječnja 2010
iShater je rekao: Možete li objaviti stvarnu pogrešku? Zašto je vaša povratna izjava prije kraja vaše metode? Kliknite za proširenje...

Stvarna pogreška je dvostruka, ne može se dereferencirati.

Cromulent

2. listopada 2006
Zemlja nade i slave
  • 25. siječnja 2010
Prije svega, vratite se prije nego što pogodite svoje if.. else izjave što znači da nikada neće biti pozvani.

Drugo, vaša metoda vraća double, ali vi pokušavate vratiti niz u svojim if.. else izjavama.

Treće kada pozivate metodu toString() trebate koristiti objekt Double umjesto primitivnog tipa. Stoga biste trebali deklarirati BMI kao Double (java.lang.Double), a ne kao dupli.

Evo jednostavnog primjera:

Šifra: |_+_|

chown33

Moderator
Član osoblja
9. kolovoza 2009
Abysmal Plane
  • 25. siječnja 2010
DaveTaylor je rekao: Stvarna pogreška je dvostruka, ne može se dereferencirati. Kliknite za proširenje...

Prvo, ne možete učiniti ovo:
Šifra: |_+_|
jer je BMI deklariran kao dvostruko , primitivni tip. Koliko se sjećam, Java ne izvodi autoboxing u ovoj situaciji.

Ako se BMI deklarira kao Dvostruko , klasa omotača za primitivni tip, onda bi moglo raditi...

Osim što ovo ne možete učiniti:
Šifra: |_+_|
jer Java ne dodaje automatski () umjesto vas. Ako želite pozvati metodu toString na objektu, morate je napisati kao pozivanje metode:
Šifra: |_+_|
Ako ne koristite vodič ili knjigu, doista biste trebali biti.

lee1210

10. siječnja 2005
Dallas, TX
  • 25. siječnja 2010
Samo sam želio dodati dobra zapažanja do sada sugerirajući korištenje metode valueOf(double) java.lang.String. Možete pokrenuti ovo i vratiti String. Korištenje operatora String + double također radi dobro, ali nije potrebno ako je sve što želite string reprezentacija double.

-Čitati C

cx300

12. rujna 2008
Clermont, FL
  • 25. siječnja 2010
Moja java je malo zahrđala, ali ovo bi trebalo biti ispravno...

Šifra: |_+_|

chown33

Moderator
Član osoblja
9. kolovoza 2009
Abysmal Plane
  • 25. siječnja 2010
cx300 je rekao: Moja java je malo zahrđala, ali ovo bi trebalo biti ispravno...

Šifra: |_+_| Kliknite za proširenje...

Kada je izračun (težina/(masa * masa)) bez drugih koeficijenata, jedinice visine su metri, a jedinice mase (težine) kilogrami. Ako visina može uzeti samo cijeli broj metara (1, 2, 3), imate ozbiljan problem s preciznošću.

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

Također, ovi tipovi nikada neće proizvesti bilo kakvu razlomačku vrijednost u rezultatu, jer se izračun u potpunosti provodi u cjelobrojnoj aritmetici (tj. skraćujućim dijeljenjem), a zatim se cjelobrojni rezultat pretvara u dvostruki. Ako želite dvostruki izračun s mogućnošću razlomka, barem jedan operand mora biti tipa double.

Mislim da ovaj problem nije jedinstven za Javu. Imali biste slične probleme u C, koji ima slična pravila za cjelobrojnu i dvostruku aritmetiku.