Дейв Тейлър
Оригинален плакат- 6 ноември 2007 г
- Абърдийншир, Шотландия
- 25 януари 2010 г
Помогне? хаха
iShater
- 13 август 2002 г
- Чикаголенд
- 25 януари 2010 г
stanl8
- 24 декември 2009 г
- Манчестър, Великобритания
- 25 януари 2010 г
връщане ('' + BMI);
Това означава, че операторът '+' ще извърши конкатенация.
Второ, не разбирам кога тези if оператори някога ще се изпълнят, защото имате оператор за връщане по-горе, който винаги ще се изпълнява д
Дейв Тейлър
Оригинален плакат- 6 ноември 2007 г
- Абърдийншир, Шотландия
- 25 януари 2010 г
iShater каза: Можете ли да публикувате действителната грешка? Защо вашето изявление за връщане е преди края на вашия метод? Щракнете, за да разгънете...
Действителната грешка е двойна, не може да бъде дереферирана.
Cromulent
- 2 октомври 2006 г
- Страната на надеждата и славата
- 25 януари 2010 г
Второ, вашият метод връща double, но вие се опитвате да върнете низ във вашите if.. else изрази.
На трето място, когато извиквате метода toString(), трябва да използвате обекта Double, а не примитивния тип. Така че трябва да декларирате BMI като Double (java.lang.Double), а не двойно.
Ето един прост пример:
Код: |_+_|
chown33
Модератор
Член на персонала- 9 август 2009 г
- Бездната равнина
- 25 януари 2010 г
Дейв Тейлър каза: Действителната грешка е двойна, не може да бъде дереферирана. Щракнете, за да разгънете...
Първо, не можете да направите това:
Код: |_+_|
тъй като ИТМ е деклариран като двойно , примитивен тип. Java не извършва автоматично боксиране в тази ситуация, както си спомням.
Ако ИТМ е деклариран като Двойна , класът обвивка за примитивен тип, тогава може да работи...
Освен че не можете да направите това:
Код: |_+_|
защото Java не добавя автоматично () вместо вас. Ако искате да извикате метода toString върху обект, трябва да го напишете като извикване на метод:
Код: |_+_|
Ако не използвате урок или книга, наистина трябва да го използвате.
lee1210
- 10 януари 2005 г
- Далас, Тексас
- 25 януари 2010 г
-Прочети ° С
cx300
- 12 септември 2008 г
- Клермонт, Флорида
- 25 януари 2010 г
Код: |_+_|
chown33
Модератор
Член на персонала- 9 август 2009 г
- Бездната равнина
- 25 януари 2010 г
cx300 каза: Java ми е малко ръждясал, но това трябва да е правилно...
Код: |_+_| Щракнете, за да разгънете...
Когато изчислението е (тегло/(маса * маса)) без други коефициенти, единиците за височина са метри, а единиците за маса (тегло) са килограми. Ако височината може да приеме само цели метри (1, 2, 3), имате сериозен проблем с точността.
http://en.wikipedia.org/wiki/Body_mass_index
Освен това тези типове никога няма да произведат никаква дробна стойност в резултата, тъй като изчислението се извършва изцяло в целочислена аритметика (т.е. съкращаващо деление), след което целочисленият резултат се преобразува в двоен. Ако искате двойно изчисление с възможност за дробна част, поне един операнд трябва да е от тип double.
Не мисля, че този проблем е уникален за Java. Ще имате подобни проблеми в C, който има подобни правила за целочислена и двойна аритметика.
Популярни Публикации