Muu

Mac [Java] double -viittauksia ei voi poistaa

D

DaveTaylor

Alkuperäinen juliste
6. marraskuuta 2007
Aberdeenshire, Skotlanti
  • 25. tammikuuta 2010
Koodi: |_+_|
Auta? LOL

iShater

13. elokuuta 2002


Chicagoland
  • 25. tammikuuta 2010
Voitko lähettää todellisen virheen? Miksi palautuslausekkeesi on ennen menetelmäsi loppua? S

stanl8

24. joulukuuta 2009
Manchester, Iso-Britannia
  • 25. tammikuuta 2010
Ensinnäkin sinun pitäisi yrittää
paluu ('' + BMI);
Toisin sanoen '+'-operaattori suorittaa ketjutuksen.

Toiseksi, en ymmärrä milloin nuo if-lauseet koskaan suoritetaan, koska sinulla on yläpuolella return-lause, joka suoritetaan aina D

DaveTaylor

Alkuperäinen juliste
6. marraskuuta 2007
Aberdeenshire, Skotlanti
  • 25. tammikuuta 2010
iShater sanoi: Voitko lähettää todellisen virheen? Miksi palautuslausekkeesi on ennen menetelmäsi loppua? Laajenna napsauttamalla...

Todellinen virhe on kaksinkertainen, eikä siihen voida vedota.

Kromulentti

2. lokakuuta 2006
Toivon ja kunnian maa
  • 25. tammikuuta 2010
Ensinnäkin palaat ennen kuin osut jos.. muuten lausumiin, mikä tarkoittaa, että niitä ei koskaan kutsuta.

Toiseksi menetelmäsi palauttaa tuplaarvon, mutta yrität palauttaa merkkijonon if.. else -lauseissasi.

Kolmanneksi toString()-metodia kutsuttaessa on käytettävä objektia Double primitiivityypin sijaan. Joten sinun pitäisi ilmoittaa BMI:ksi Double (java.lang.Double) eikä tuplaa.

Tässä on yksinkertainen esimerkki:

Koodi: |_+_|

chown33

Moderaattori
Henkilökunnan jäsen
9. elokuuta 2009
Abysmal Plane
  • 25. tammikuuta 2010
DaveTaylor sanoi: Todellinen virhe on kaksinkertainen, ei voida poistaa viittausta. Laajenna napsauttamalla...

Ensinnäkin et voi tehdä tätä:
Koodi: |_+_|
koska BMI on ilmoitettu kaksinkertainen , primitiivinen tyyppi. Java ei muistaakseni suorita autoboxia tässä tilanteessa.

Jos BMI olisi ilmoitettu Kaksinkertainen , primitiivityypin kääreluokka, niin se saattaa toimia...

Paitsi että et voi tehdä tätä:
Koodi: |_+_|
koska Java ei lisää automaattisesti ()-merkkejä puolestasi. Jos haluat kutsua toString-metodia objektiin, sinun on kirjoitettava se metodikutsuna:
Koodi: |_+_|
Jos et käytä opetusohjelmaa tai kirjaa, sinun pitäisi todella olla.

lee1210

10. tammikuuta 2005
Dallas, TX
  • 25. tammikuuta 2010
Halusin vain lisätä tähän mennessä tehtyjä hyviä havaintoja ehdottamalla java.lang.Stringin valueOf(double) -menetelmän käyttöä. Voit suorittaa tämän ja saada merkkijonon takaisin. Myös String + kaksoisoperaattorin käyttö toimii hyvin, mutta sitä ei tarvita, jos haluat vain kaksoiskappaleen merkkijonoesityksen.

-Lukea C

cx300

12. syyskuuta 2008
Clermont, FL
  • 25. tammikuuta 2010
Javani on hieman ruosteinen, mutta tämän pitäisi olla oikein...

Koodi: |_+_|

chown33

Moderaattori
Henkilökunnan jäsen
9. elokuuta 2009
Abysmal Plane
  • 25. tammikuuta 2010
cx300 sanoi: Javani on hieman ruosteinen, mutta tämän pitäisi olla oikein...

Koodi: |_+_| Laajenna napsauttamalla...

Kun laskenta on (paino/(massa * massa)) ilman muita kertoimia, korkeusyksiköt ovat metrejä ja massan (paino) yksiköt kilogrammoja. Jos korkeus voi olla vain kokonaislukumetrejä (1, 2, 3), sinulla on vakava tarkkuusongelma.

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

Nämä tyypit eivät myöskään koskaan tuota tulokseen murto-osaa, koska laskenta suoritetaan kokonaan kokonaislukuaritmetiikassa (eli katkaisujaolla), jolloin kokonaislukutulos muunnetaan kaksinkertaiseksi. Jos haluat kaksoislaskennan murto-osan mahdollisuudella, vähintään yhden operandin on oltava tyyppiä double.

En usko, että tämä ongelma on ainutlaatuinen Java. Sinulla olisi samanlaisia ​​ongelmia C:ssä, jolla on samanlaiset säännöt kokonaisluvuille ja kaksoisaritmetiikalle.