Iba Pa

Hindi maaaring i-dereference ang Mac [Java] double

D

DaveTaylor

Orihinal na poster
Nob 6, 2007
Aberdeenshire, Scotland
  • Ene 25, 2010
Code: |_+_|
Tulong? lol

iShater

Agosto 13, 2002


Chicagoland
  • Ene 25, 2010
Maaari mo bang i-post ang aktwal na error? Bakit ang iyong return statement ay bago ang katapusan ng iyong pamamaraan? S

stanl8

Disyembre 24, 2009
Manchester, UK
  • Ene 25, 2010
Una sa lahat dapat mong subukan
bumalik ('' + BMI);
Ibig sabihin, ang '+' operator ay magsasagawa ng concatenation.

Pangalawa, hindi ko maintindihan kung kailan ipapatupad ang mga if statement na iyon dahil mayroon kang return statement sa itaas na palaging ipapatupad D

DaveTaylor

Orihinal na poster
Nob 6, 2007
Aberdeenshire, Scotland
  • Ene 25, 2010
Sinabi ng iShater: Maaari mo bang i-post ang aktwal na error? Bakit ang iyong return statement ay bago ang katapusan ng iyong pamamaraan? I-click para palawakin...

Ang aktwal na error ay doble ay hindi maaaring i-dereference.

Cromulent

Oktubre 2, 2006
Ang Lupain ng Pag-asa at Kaluwalhatian
  • Ene 25, 2010
Una sa lahat bumalik ka bago mo pindutin ang iyong kung.. else statements ibig sabihin hindi na sila matatawag.

Pangalawa ang iyong pamamaraan ay nagbabalik ng doble ngunit sinusubukan mong ibalik ang isang string sa iyong if.. else na mga pahayag.

Pangatlo kapag tumatawag sa toString() na paraan kailangan mong gamitin ang object na Double kaysa sa primitive na uri. Kaya dapat mong ideklara ang BMI bilang Double (java.lang.Double) sa halip na doble.

Narito ang isang simpleng halimbawa:

Code: |_+_|

chown33

Moderator
Miyembro ng tauhan
Agosto 9, 2009
ang Abysmal Plane
  • Ene 25, 2010
Sinabi ni DaveTaylor: Ang aktwal na error ay doble ay hindi maaaring i-dereference. I-click para palawakin...

Una, hindi mo magagawa ito:
Code: |_+_|
dahil ang BMI ay idineklara bilang doble , ang primitive na uri. Ang Java ay hindi gumaganap ng autoboxing sa sitwasyong ito, bilang naaalala ko.

Kung ang BMI ay idineklara bilang Doble , ang klase ng wrapper para sa primitive na uri, kung gayon maaari itong gumana...

Maliban na hindi mo magagawa ito:
Code: |_+_|
dahil ang Java ay hindi awtomatikong nagdaragdag ng () para sa iyo. Kung gusto mong i-invoke ang toString method sa isang object, kailangan mong isulat ito bilang method invocation:
Code: |_+_|
Kung hindi ka gumagamit ng tutorial o libro, dapat talaga.

lee1210

Ene 10, 2005
Dallas, TX
  • Ene 25, 2010
Nais ko lang idagdag ang magagandang obserbasyon na ginawa sa ngayon sa pamamagitan ng pagmumungkahi ng paggamit ng java.lang.String's valueOf(double) na paraan. Maaari mong patakbuhin ito at makakuha ng isang String pabalik. Ang paggamit ng String + double operator ay gumagana rin, ngunit hindi kinakailangan kung ang gusto mo lang ay ang String na representasyon ng isang double.

-Basahin C

cx300

Setyembre 12, 2008
Clermont, FL
  • Ene 25, 2010
Ang aking java ay medyo kinakalawang ngunit ito ay dapat na tama...

Code: |_+_|

chown33

Moderator
Miyembro ng tauhan
Agosto 9, 2009
ang Abysmal Plane
  • Ene 25, 2010
Sabi ni cx300: Medyo kinakalawang ang java ko pero dapat tama ito...

Code: |_+_| I-click para palawakin...

Kapag ang kalkulasyon ay (timbang/(mass * mass)) na walang ibang coefficients, ang height units ay metro at mass (weight) units ay kilo. Kung ang taas ay maaari lamang tumagal sa integer meter (1, 2, 3), mayroon kang malubhang problema sa katumpakan.

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

Gayundin, ang mga uri na ito ay hindi kailanman gagawa ng anumang fractional na halaga sa resulta, dahil ang pagkalkula ay ganap na isinasagawa sa integer arithmetic (i.e. truncating division), pagkatapos ay ang integer na resulta ay na-convert sa doble. Kung gusto mo ng dobleng kalkulasyon na may posibilidad ng isang fractional na bahagi, hindi bababa sa isang operand ay dapat na doble ang uri.

Hindi sa tingin ko ang problemang ito ay natatangi sa Java. Magkakaroon ka ng mga katulad na problema sa C, na may mga katulad na panuntunan para sa integer at double arithmetic.