Egyéb

A Mac [Java] double nem eltávolítható

D

DaveTaylor

Eredeti plakát
2007. november 6
Aberdeenshire, Skócia
  • 2010. január 25
Kód: |_+_|
Segítség? lol

iShater

2002. augusztus 13


Chicagoland
  • 2010. január 25
El tudod írni a valódi hibát? Miért van a visszatérési nyilatkozatod a metódus vége előtt? S

stanl8

2009. december 24
Manchester, Egyesült Királyság
  • 2010. január 25
Először is meg kell próbálnia
return ('' + BMI);
Vagyis a '+' operátor hajtja végre az összefűzést.

Másodszor, nem értem, hogy ezek az if utasítások mikor fognak valaha végrehajtódni, mert van egy visszatérési utasításod, amely mindig végrehajtódik D

DaveTaylor

Eredeti plakát
2007. november 6
Aberdeenshire, Skócia
  • 2010. január 25
iShater azt mondta: El tudod küldeni a tényleges hibát? Miért van a visszatérési nyilatkozatod a metódus vége előtt? Kattintson a kibontáshoz...

A tényleges hiba kétszeres, nem lehet hivatkozni.

Kromulent

2006. október 2
A remény és a dicsőség földje
  • 2010. január 25
Először is visszatérsz, mielőtt megütöd az if.. kijelentéseket, ami azt jelenti, hogy soha nem fogják hívni.

Másodszor, a metódus egy double-t ad vissza, Ön azonban egy karakterláncot próbál visszaadni az if.. else utasításaiban.

Harmadszor, a toString() metódus meghívásakor a primitív típus helyett a Double objektumot kell használni. Tehát a BMI-t duplaként (java.lang.Double) kell deklarálnia, nem pedig duplaként.

Íme egy egyszerű példa:

Kód: |_+_|

chown33

Moderátor
Munkatárs
2009. augusztus 9
az Abysmal Plane
  • 2010. január 25
DaveTaylor azt mondta: A tényleges hiba kétszeres, nem lehet hivatkozni. Kattintson a kibontáshoz...

Először is, ezt nem teheti meg:
Kód: |_+_|
mert a BMI-t úgy deklarálják kettős , a primitív típus. Emlékeim szerint a Java ebben a helyzetben nem hajt végre autoboxot.

Ha a BMI-t mint Kettős , a wrapper osztály a primitív típushoz, akkor működhet...

Kivéve, hogy ezt nem teheti meg:
Kód: |_+_|
mert a Java nem ad hozzá automatikusan ()-t helyetted. Ha egy objektumon szeretné meghívni a toString metódust, akkor metódushívásként kell megírnia:
Kód: |_+_|
Ha nem oktatóanyagot vagy könyvet használ, akkor valóban használnia kell.

lee1210

2005. január 10
Dallas, TX
  • 2010. január 25
Csak hozzá akartam tenni az eddigi jó megfigyeléseket azzal, hogy a java.lang.String valueOf(double) metódusát javasoltam. Futtathatod, és visszakaphatod a Stringet. A String + dupla operátor használata is jól működik, de nincs rá szükség, ha csak egy kettős karakterlánc-ábrázolását akarja.

-Olvas C

cx300

2008. szeptember 12
Clermont, FL
  • 2010. január 25
Kicsit rozsdás a javam, de ennek így kell lennie...

Kód: |_+_|

chown33

Moderátor
Munkatárs
2009. augusztus 9
az Abysmal Plane
  • 2010. január 25
cx300 mondta: Kicsit rozsdás a javam, de ennek így kell lennie...

Kód: |_+_| Kattintson a kibontáshoz...

Ha a számítás (súly/(tömeg * tömeg)) más együttható nélkül, a magasság mértékegysége méter, a tömeg (tömeg) mértékegysége pedig kilogramm. Ha a magasság csak egész métert vehet fel (1, 2, 3), akkor komoly precíziós problémája van.

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

Ezen túlmenően ezek a típusok soha nem adnak tört értéket az eredményben, mivel a számítás teljes egészében aritmetikával történik (azaz csonka osztás), majd az egész eredményt duplává alakítjuk. Ha kettős számítást szeretne törtrész lehetőségével, akkor legalább egy operandusnak double típusúnak kell lennie.

Nem hiszem, hogy ez a probléma kizárólag a Java-ra vonatkozik. Hasonló problémák lennének a C-ben, amelynek hasonló szabályai vannak az egész számokra és a kettős aritmetikára.