IMC no NOTEPAD++ (java) - problema com pontuação

7 respostas
java
L

Estou fazendo um IMC no notepad++(Java) mas na hora de colocar altura o programa fecha porque tem “.” ou “,” e se colocar por exemplo 180 em vez de 1,80 ele roda.

Essa é a mensagem que aparece:

Exception in thread main java.lang.NumberFormatException: For input string: "1.80"

at java.lang.NumberFormatException.forInputString(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at java.lang.Integer.parseInt(Unknown Source)

at Ex9.main(Ex9.java:13)

alguém sabe ajudar?

7 Respostas

L

Edit:
Você está convertendo em inteiro. Tente utiizar Float ou Double, que suportam valores fracionados.

Rodrigo_Void

Olá,
se vc está lendo um double do console, precisa digita-lo com “,”. É assim.
Porém, se não concorda com este comportamento e quer que seu programa aceite “.”, vai precisar ler como String e fazer o parse manualmente para double, considerando . e/ou ,

L
import javax.swing.JOptionPane;

public class Ex9 {

	public static void main(String[] args) {
		
		double massa;
		
		massa = Integer.parseInt(JOptionPane.showInputDialog("Digite seu peso:"));
		
		double altura;
		
		altura = Integer.parseInt(JOptionPane.showInputDialog("Digite sua altura:"));
		
		double IMC;
		
		IMC = massa / (altura * altura );

		JOptionPane.showMessageDialog(null,"Seu IMC é : " +IMC);
	}
}

tem algo errado? pra não rodar ponto nem virgula ?

L

Tem, você lê um número quebrado e fazer a conversão para um número inteiro

L
import javax.swing.JOptionPane;

public class Ex9 {

	public static void main(String[] args) {
		
		double massa;
		
		massa = Integer.parseInt(JOptionPane.showInputDialog("Digite seu peso:"));
		
		double altura;
		
		altura = Integer.parseInt(JOptionPane.showInputDialog("Digite sua altura:"));
		
		double IMC;
		
		IMC = massa / (altura * altura );

		JOptionPane.showMessageDialog(null,"Seu IMC é : " +IMC);
	}
}
Rodrigo_Void

POISEEEEE,
Vc digita um valor “decimal” e ai quer converter algo com ponto ou virgula pra inteiro???
Tem algo errado nesta sua lógica cara.
Se quer converter uma String para decimal, precisa converter para DOUBLE:
Double.parseDouble

L

olhando assim agr me parece bem obvio kkkk. Estou no começo da facul, obrigado pela ajuda !

Criado 11 de abril de 2017
Ultima resposta 11 de abr. de 2017
Respostas 7
Participantes 3