Остало

Мац [Јава] доубле се не може дереференцирати

Д

ДавеТаилор

Оригинални постер
6. новембар 2007
Абердиншир, Шкотска
  • 25. јануара 2010
Шифра: |_+_|
Помоћ? лол

иСхатер

13. августа 2002


Цхицаголанд
  • 25. јануара 2010
Можете ли објавити стварну грешку? Зашто је ваша повратна изјава пре краја вашег метода? С

станл8

24. децембра 2009
Манчестер, УК
  • 25. јануара 2010
Пре свега треба да покушате
повратак ('' + БМИ);
То јест, '+' оператор ће извршити конкатенацију.

Друго, не разумем када ће се те иф наредбе икада извршити јер имате наредбу ретурн изнад која ће се увек извршавати Д

ДавеТаилор

Оригинални постер
6. новембар 2007
Абердиншир, Шкотска
  • 25. јануара 2010
иСхатер је рекао: Можете ли објавити стварну грешку? Зашто је ваша повратна изјава пре краја вашег метода? Кликните да проширите...

Стварна грешка је двострука, не може се дереференцирати.

Цромулент

2. октобар 2006
Земља наде и славе
  • 25. јануара 2010
Пре свега, вратите се пре него што притиснете своје иф.. елсе изјаве што значи да никада неће бити позване.

Друго, ваш метод враћа доубле, а ви покушавате да вратите стринг у вашим иф.. елсе изјавама.

Треће када позивате методу тоСтринг() потребно је да користите објекат Доубле уместо примитивног типа. Дакле, требало би да декларишете БМИ као Доубле (јава.ланг.Доубле), а не као дупли.

Ево једноставног примера:

Шифра: |_+_|

цховн33

Модератор
Запослени
9. августа 2009
Абисмал Плане
  • 25. јануара 2010
ДавеТаилор је рекао: Стварна грешка је двострука, не може се дереференцирати. Кликните да проширите...

Прво, не можете да урадите ово:
Шифра: |_+_|
јер је БМИ декларисан као дупло , примитивни тип. Колико се ја сећам, Јава не врши аутоматско боксовање у овој ситуацији.

Ако би се БМИ декларисао као Двоструко , класа омотача за примитивни тип, онда би могло да ради...

Осим што ово не можете учинити:
Шифра: |_+_|
јер Јава не додаје аутоматски () уместо вас. Ако желите да позовете метод тоСтринг на објекту, морате га написати као позивање методе:
Шифра: |_+_|
Ако не користите туторијал или књигу, заиста би требало да будете.

лее1210

10. јануара 2005
Далас, Тексас
  • 25. јануара 2010
Само сам желео да додам добра запажања до сада тако што сам предложио употребу јава.ланг.Стринг методе валуеОф(доубле). Можете покренути ово и вратити Стринг. Коришћење оператора Стринг + доубле такође функционише добро, али није потребно ако је све што желите стринг репрезентацију доубле.

-Читати Ц

цк300

12. септембар 2008
Цлермонт, ФЛ
  • 25. јануара 2010
Моја јава је мало зарђала, али ово би требало да буде тачно...

Шифра: |_+_|

цховн33

Модератор
Запослени
9. августа 2009
Абисмал Плане
  • 25. јануара 2010
цк300 је рекао: Моја јава је мало зарђала, али ово би требало да буде тачно...

Шифра: |_+_| Кликните да проширите...

Када је прорачун (тежина/(маса * маса)) без других коефицијената, јединице висине су метри, а јединице масе (тежине) су килограми. Ако висина може да преузме само целе метре (1, 2, 3), имате озбиљан проблем са прецизношћу.

хттп://ен.википедиа.орг/вики/Боди_масс_индек

Такође, ови типови никада неће произвести било какву разломачку вредност у резултату, јер се израчунавање врши у потпуности у целобројној аритметици (тј. скраћујуће дељење), а затим се целобројни резултат претвара у двоструки. Ако желите двоструко израчунавање са могућношћу фракционог дела, најмање један операнд мора бити типа доубле.

Мислим да овај проблем није јединствен за Јаву. Имали бисте сличне проблеме у Ц, који има слична правила за целобројну и двоструку аритметику.