Kita

„Mac [Java]“ dvigubo nuorodos negalima panaikinti

D

Dave'as Tayloras

Originalus plakatas
2007 m. lapkričio 6 d
Aberdynšyras, Škotija
  • 2010 m. sausio 25 d
Kodas: |_+_|
Pagalba? daug juoko

iShater

2002 m. rugpjūčio 13 d


Čikagalandas
  • 2010 m. sausio 25 d
Ar galite paskelbti tikrąją klaidą? Kodėl jūsų grąžinimo pareiškimas pateikiamas prieš metodo pabaigą? S

stanl8

2009 m. gruodžio 24 d
Mančesteris, JK
  • 2010 m. sausio 25 d
Visų pirma turėtumėte pabandyti
grįžti ('' + KMI);
Tai reiškia, kad operatorius „+“ atliks sujungimą.

Antra, aš nesuprantu, kada tie if sakiniai kada nors bus vykdomi, nes aukščiau yra grąžinimo sakinys, kuris visada bus vykdomas D

Dave'as Tayloras

Originalus plakatas
2007 m. lapkričio 6 d
Aberdynšyras, Škotija
  • 2010 m. sausio 25 d
iShater pasakė: Ar galite paskelbti tikrąją klaidą? Kodėl jūsų grąžinimo pareiškimas pateikiamas prieš metodo pabaigą? Spustelėkite norėdami išplėsti...

Tikroji klaida yra dviguba, jos negalima atmesti.

Kromulentinis

2006 m. spalio 2 d
Vilties ir šlovės žemė
  • 2010 m. sausio 25 d
Visų pirma, jūs grįžtate prieš paspausdami jei.. kitaip teiginius, reiškiančius, kad jie niekada nebus vadinami.

Antra, jūsų metodas grąžina dvigubą, tačiau jūs bandote grąžinti eilutę savo if.. else teiginiuose.

Trečia, iškviečiant metodą toString() reikia naudoti objektą Double, o ne primityvų tipą. Taigi turėtumėte paskelbti KMI kaip dvigubą (java.lang.Double), o ne dvigubą.

Štai paprastas pavyzdys:

Kodas: |_+_|

chown33

Moderatorius
Darbuotojas
2009 m. rugpjūčio 9 d
bedugnė plokštuma
  • 2010 m. sausio 25 d
DaveTaylor sakė: Tikroji klaida yra dviguba, negalima atmesti nuorodos. Spustelėkite norėdami išplėsti...

Pirma, jūs negalite to padaryti:
Kodas: |_+_|
nes KMI deklaruojamas kaip dvigubai , primityvus tipas. „Java“, kaip prisimenu, šioje situacijoje nevykdo automatinio dėžės.

Jei KMI būtų deklaruotas kaip Dvigubas , primityviojo tipo įvyniojimo klasė, tada ji gali veikti...

Išskyrus tai, kad negalite to padaryti:
Kodas: |_+_|
nes Java automatiškai neprideda () už jus. Jei objekte norite iškviesti metodą toString, turite jį parašyti kaip metodo iškvietimą:
Kodas: |_+_|
Jei nenaudojate mokymo programos ar knygos, tai tikrai turėtumėte.

lee1210

2005 m. sausio 10 d
Dalasas, Teksasas
  • 2010 m. sausio 25 d
Aš tik norėjau papildyti iki šiol padarytus gerus pastebėjimus, siūlydamas naudoti java.lang.String valueOf(double) metodą. Galite paleisti tai ir susigrąžinti eilutę. Stygos + dvigubas operatorius taip pat veikia gerai, bet jo nereikia, jei viskas, ko norite, yra dvigubo simbolio eilutė.

- Skaityk C

cx300

2008 m. rugsėjo 12 d
Klermonas, Florida
  • 2010 m. sausio 25 d
Mano „Java“ yra šiek tiek surūdijusi, bet tai turėtų būti teisinga...

Kodas: |_+_|

chown33

Moderatorius
Darbuotojas
2009 m. rugpjūčio 9 d
bedugnė plokštuma
  • 2010 m. sausio 25 d
cx300 pasakė: Mano java yra šiek tiek surūdijusi, bet tai turėtų būti teisinga...

Kodas: |_+_| Spustelėkite norėdami išplėsti...

Kai skaičiuojama (svoris/(masė * masė)) be kitų koeficientų, aukščio vienetai yra metrai, o masės (masė) – kilogramai. Jei aukštis gali siekti tik sveikų skaičių metrų (1, 2, 3), turite rimtą tikslumo problemą.

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

Be to, šie tipai niekada neduos rezultato trupmeninės reikšmės, nes skaičiuojama tik sveikųjų skaičių aritmetika (t. y. sutrumpinamas padalijimas), tada sveikasis rezultatas konvertuojamas į dvigubą. Jei norite dvigubo skaičiavimo su trupmeninės dalies galimybe, bent vienas operandas turi būti dvigubo tipo.

Nemanau, kad ši problema būdinga tik Java. Turėtumėte panašių problemų su C, kuri turi panašias sveikųjų skaičių ir dvigubos aritmetikos taisykles.