DaveTaylor
Pôster original- 6 de novembro de 2007
- Aberdeenshire, Escócia
- 25 de janeiro de 2010
public double calcBMI() { double BMI; BMI = weight / (height * height); return BMI; if (BMI >=30) { return BMI.toString + 'Obese'; } else if (BMI >=25) { return BMI.toString + 'Overweight'; } else if (BMI >=18.5) { return BMI.toString + 'Normal Weight'; } else { return BMI.toString + 'Underweight'; } }
Ajuda? lol
iShater
- 13 de agosto de 2002
- Chicagoland
- 25 de janeiro de 2010
Stanl8
- 24 de dezembro de 2009
- Manchester, Reino Unido
- 25 de janeiro de 2010
retorno ('' + IMC);
Ou seja, o operador '+' executará a concatenação.
Em segundo lugar, não entendo quando essas instruções if serão executadas porque você tem uma instrução return acima que sempre será executada D
DaveTaylor
Pôster original- 6 de novembro de 2007
- Aberdeenshire, Escócia
- 25 de janeiro de 2010
iShater disse: Você pode postar o erro real? Por que sua instrução de retorno está antes do final do seu método? Clique para expandir...
O erro real é duplo e não pode ser desreferenciado.
Cromulento
- 2 de outubro de 2006
- A Terra de Esperança e Glória
- 25 de janeiro de 2010
Em segundo lugar, seu método retorna um double, mas você está tentando retornar uma string em suas instruções if .. else.
Em terceiro lugar, ao chamar o método toString (), você precisa usar o objeto Double em vez do tipo primitivo. Portanto, você deve declarar o IMC como duplo (java.lang.Double) em vez de duplo.
Aqui está um exemplo simples:
Código:
public class Main { public static void main(String[] args) { Double test; test = 0.843; String test_string = test.toString(); System.out.println(test_string); System.out.println(test); } }
chown 33
Moderador
Membro da equipe- 9 de agosto de 2009
- o plano abismal
- 25 de janeiro de 2010
DaveTaylor disse: O erro real é duplo e não pode ser desreferenciado. Clique para expandir...
Primeiro, você não pode fazer isso:
Código:
... BMI.toString ...
porque o IMC é declarado como Duplo , o tipo primitivo. Java não executa autoboxing nesta situação, pelo que me lembro.
Se o IMC foi declarado como Dobro , a classe de wrapper para o tipo primitivo, então pode funcionar ...
Exceto que você não pode fazer isso:
Código:
... someObject.someMethod ...
porque o Java não adiciona () automaticamente para você. Se você deseja invocar o método toString em um objeto, deve escrevê-lo como uma invocação de método:
Código:
... anyObject.toString() ...
Se você não está usando um tutorial ou um livro, você realmente deveria estar.
lee1210
- 10 de janeiro de 2005
- Dallas, TX
- 25 de janeiro de 2010
-Leitura C
cx300
- 12 de setembro de 2008
- Clermont, FL
- 25 de janeiro de 2010
Código:
public String calcBMI(int height, int weight) { double BMI; BMI = (weight / (height * height)); String str = ; if (BMI >=30) { str = (Double.toString(BMI) + Obese); return str; } else if (BMI >=25) { str = (Double.toString(BMI) + Overweight); return str; } else if (BMI >=18.5) { str = (Double.toString(BMI) + Normal Weight); return str; } else { str = (Double.toString(BMI) + Underweight); return str; } }
chown 33
Moderador
Membro da equipe- 9 de agosto de 2009
- o plano abismal
- 25 de janeiro de 2010
cx300 disse: Meu java está um pouco enferrujado, mas isso deve estar certo ...
Código:public String calcBMI(int height, int weight) { double BMI; BMI = (weight / (height * height));
Clique para expandir...
Quando o cálculo é (peso / (massa * massa)) sem outros coeficientes, as unidades de altura são metros e as unidades de massa (peso) são quilogramas. Se a altura só pode assumir metros inteiros (1, 2, 3), você tem um sério problema de precisão.
http://en.wikipedia.org/wiki/Body_mass_index
Além disso, esses tipos nunca irão produzir qualquer valor fracionário no resultado, porque o cálculo é realizado inteiramente em aritmética inteira (isto é, divisão truncada), então o resultado inteiro é convertido em duplo. Se desejar um cálculo duplo com possibilidade de parte fracionária, pelo menos um operando deve ser do tipo duplo.
Não acho que esse problema seja exclusivo do Java. Você teria problemas semelhantes em C, que tem regras semelhantes para inteiros e aritmética dupla.
Publicações Populares