Olá pessoal.
É a primeira vez que eu estou postando aqui, sou aluno do primeiro ano de Ciencia da Computação, na faculdade em logprog a gente usa Java e o professor passou hoje pra gente fazer um programa que calcule o Indice de Massa Corporal de uma pessoa… ou seja, deve-se dividir a altura pelo quadrado do peso.
Esses dados devem ser em números quebrados… 2,5 10,5 1,1 etc
Agora vem o problema…
Eu compilo o programa e não da erro nenhum, coloco pra rodar e quando ele pede o Peso se eu digitar um valor quebrado o programa fecha, se eu digito um número inteiro ele continua normal
O que será que eu estou fazendo de errado?
Desculpem se a pergunta for meia burra, mas é que eu não manjo NADA de Java, faz duas semanas só que eu estou aprendendo…
Abaixo segue o código que eu usei
import javax.swing.JOptionPane;
public class Exercicio21003
{
public static void main(String args [])
{
double dpeso, daltura, dimc;
String speso, saltura, sout;
speso=JOptionPane.showInputDialog ( “Peso em Kg” );
dpeso=Double.parseDouble( speso );
saltura=JOptionPane.showInputDialog ( “Altura em metros” );
daltura=Double.parseDouble( saltura );
dimc=dpeso/(daltura*daltura);
sout="sua massa corporal é " + dimc;
JOptionPane.showMessageDialog( null, sout, “saida”, JOptionPane.INFORMATION_MESSAGE );
System.exit(0);
}
}
Alguma exceção é jogada para você (se sim, poste aqui)?
Hmmm, talvez você não saiba ainda o que é uma exceção. Se não souber, leia isso e isso.
Depois disso, você vai notar que o comando “Double.parseDouble(String)” pode lançar uma tal de java.lang.NumberFormatException. Isso se deve ao fato de nem toda String que pode ser passada como parâmetro pode ser convertida em um tipo numérico do tipo double. Bom, levando em consideração isso, vamos dar uma ajeitada no seu código para que ele possa tratar algumas exceções.
Pronto. Agora seu programa é capaz de tratar possíveis erros de entrada de dados adequadamente.
Agora, chutando: seu problema deve acontecer devido ao fato de você estar usando a vírgula (",") como separador de casas decimais, quando você deveria usar o ponto (".").
Sim…
aparece o seguinte
Exception in thread “main” java.lang.NumberFormatException: For input string:“1,1”
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.FloatingDecimal.readJavaFormatString(Unknown Source)
at Exercicio21003.main(Exercicio21003.java:9)
[quote=“Daniel Quirino Oliveira”]
Agora, chutando: seu problema deve acontecer devido ao fato de você estar usando a vírgula (",") como separador de casas decimais, quando você deveria usar o ponto (".").[/quote]
Muito obrigado Daniel, era esse o problema mesmo hehe
Posso abusar um pouquinho?
E se eu quiser que ele aceite tanto (",") quanto (".") ?