Cits

Mac [Java] dubultā atsauce nevar tikt noņemta

D

Deivs Teilors

Oriģinālais plakāts
2007. gada 6. novembris
Aberdīnšīra, Skotija
  • 2010. gada 25. janvāris
Kods: |_+_|
Palīdzēt? lol

iShater

2002. gada 13. augusts


Čikāgas zeme
  • 2010. gada 25. janvāris
Vai varat ievietot faktisko kļūdu? Kāpēc jūsu atgriešanas paziņojums ir pirms metodes beigām? S

stanl8

2009. gada 24. decembris
Mančestra, Lielbritānija
  • 2010. gada 25. janvāris
Vispirms jums vajadzētu mēģināt
atgriezties ('' + ĶMI);
Tas nozīmē, ka operators “+” veiks savienošanu.

Otrkārt, es nesaprotu, kad tie if paziņojumi kādreiz tiks izpildīti, jo jums ir iepriekš norādītais atgriešanas paziņojums, kas vienmēr tiks izpildīts D

Deivs Teilors

Oriģinālais plakāts
2007. gada 6. novembris
Aberdīnšīra, Skotija
  • 2010. gada 25. janvāris
iShater teica: vai varat publicēt faktisko kļūdu? Kāpēc jūsu atgriešanas paziņojums ir pirms metodes beigām? Noklikšķiniet, lai izvērstu...

Faktiskā kļūda ir dubultā, uz to nevar atsaukt atsauci.

Kromulents

2006. gada 2. oktobris
Cerības un godības zeme
  • 2010. gada 25. janvāris
Pirmkārt, jūs atgriezīsities, pirms trāpījat savam if.. citādi paziņojumiem, kas nozīmē, ka viņi nekad netiks izsaukti.

Otrkārt, jūsu metode atgriež dubulto, bet jūs mēģināt atgriezt virkni savos if.. else paziņojumos.

Treškārt, izsaucot toString() metodi, ir jāizmanto objekts Double, nevis primitīvais tips. Tāpēc jums vajadzētu deklarēt ĶMI kā dubultu (java.lang.Double), nevis dubultu.

Šeit ir vienkāršs piemērs:

Kods: |_+_|

chown33

Moderators
Darbinieks
2009. gada 9. augusts
bezdibenis plakne
  • 2010. gada 25. janvāris
Deivs Teilors teica: faktiskā kļūda ir dubultā, nevar atsaukt. Noklikšķiniet, lai izvērstu...

Pirmkārt, jūs nevarat darīt:
Kods: |_+_|
jo ĶMI ir deklarēts kā dubultā , primitīvais tips. Java neveic autoboxing šajā situācijā, kā es atceros.

Ja ĶMI būtu deklarēts kā Dubults , iesaiņojuma klase primitīvajam tipam, tad tas varētu darboties...

Izņemot to, ka jūs to nevarat izdarīt:
Kods: |_+_|
jo Java automātiski nepievieno () jūsu vietā. Ja vēlaties objektam izsaukt metodi toString, tas ir jāieraksta kā metodes izsaukums:
Kods: |_+_|
Ja neizmantojat pamācību vai grāmatu, jums tas tiešām ir jādara.

lee1210

2005. gada 10. janvāris
Dalasa, Teksasa
  • 2010. gada 25. janvāris
Es tikai gribēju papildināt līdz šim veiktos labos novērojumus, iesakot izmantot java.lang.String metodi valueOf(double). Varat palaist šo un atgūt virkni. String + dubultā operatora izmantošana arī darbojas labi, taču tas nav nepieciešams, ja vēlaties tikai dubultā virkni.

-Izlasi C

cx300

2008. gada 12. septembris
Klermona, Florida
  • 2010. gada 25. janvāris
Mana java ir nedaudz sarūsējusi, bet tam vajadzētu būt pareizi...

Kods: |_+_|

chown33

Moderators
Darbinieks
2009. gada 9. augusts
bezdibenis plakne
  • 2010. gada 25. janvāris
cx300 teica: Mana java ir nedaudz sarūsējusi, bet tam vajadzētu būt pareizi...

Kods: |_+_| Noklikšķiniet, lai izvērstu...

Ja aprēķins ir (svars/(masa * masa)) bez citiem koeficientiem, augstuma mērvienības ir metri, bet masas (svara) vienības ir kilogrami. Ja augstums var sasniegt tikai veselus metrus (1, 2, 3), jums ir nopietna precizitātes problēma.

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

Turklāt šie tipi rezultātos nekad neradīs daļskaitļu vērtību, jo aprēķins tiek veikts tikai veselu skaitļu aritmētikā (t.i., sadalot sadalīšanu), pēc tam veselo skaitļu rezultāts tiek pārvērsts dubultā. Ja vēlaties veikt dubultu aprēķinu ar daļdaļas iespēju, vismaz vienam operandam ir jābūt dubultā tipa.

Es nedomāju, ka šī problēma ir raksturīga tikai Java. Jums būtu līdzīgas problēmas ar C, kurai ir līdzīgi veselo skaitļu un dubultās aritmētikas noteikumi.