While e comparação com String

3 respostas
R

Bom dia pessoal, estou com uma duvida aqui, tenho um trabalho da faculdade que calcula o IMC de uma pessoa e tem um menu, minha duvida é na hora do while pois o sistema tem que parar apenas quando eu digito S , quando eu digito inteiros ele repete o menu normalmente mas se eu nao digitar nada ou uma string qualquer ele sai do programa e da um erro se alguém pudesse me ajudar ai eu agradeceria muito ;)

import javax.swing.JOptionPane;

public class TestePessoa{
	public static void main(String[]args){
		String resposta="";
		String nom;
		int opcao;
		String pesvalor;
		double pes;
		double alt;
		String altvalor;
		Pessoa p =new Pessoa();
		nom=JOptionPane.showInputDialog("DIGITE SEU NOME");
		pesvalor=JOptionPane.showInputDialog("DIGITE SEU PESO");
		altvalor=JOptionPane.showInputDialog("DIGITE SUA ALTURA");
		p.setNome(nom);
		pes = Double.parseDouble(pesvalor);
		alt = Double.parseDouble(altvalor);
		p.peso=pes;
		p.altura=alt;
		while (!resposta.equals("S")){
		resposta=JOptionPane.showInputDialog("Olá "+p.getNome()+"\nSelecione uma das opções abaixo\n 1 - Para ver o valor do seu imc\n 2 - Para ver seu Diagnostico\n S - Para sair");	
		if(resposta.equals("S")){
			JOptionPane.showMessageDialog(null,"OBRIGADO POR ULTILIZAR O SISTEMA");
			break;
		}
		opcao = Integer.parseInt(resposta);
		if (opcao==1){
			JOptionPane.showMessageDialog(null,p.imc());
		}
		if (opcao==2){
			JOptionPane.showMessageDialog(null,p.diagnostico());
		}
		
	}
		System.exit(0);
	}
}

3 Respostas

E

“S” não é um número. Integer.parseInt não gosta de “S”.

Há duas maneiras de resolver o seu problema.

a) Testar se é “S” antes de converter com Integer.parseInt
b) Não usar int; compare com “1”, “2” ou “S”

yfalbino

estou sem IDE aqui, entao nao posso testar, tente assim:

while (resposta != "S"){ resposta=JOptionPane.showInputDialog("Olá "+p.getNome()+"\nSelecione uma das opções abaixo\n 1 - Para ver o valor do seu imc\n 2 - Para ver seu Diagnostico\n S - Para sair"); if(resposta.equals("S")){ JOptionPane.showMessageDialog(null,"OBRIGADO POR ULTILIZAR O SISTEMA"); break; } if(resposta.equals("1")){ JOptionPane.showMessageDialog(null,p.imc()); } if(resposta.equals("2")){ JOptionPane.showMessageDialog(null,p.diagnostico()); }else{ JOptionPane.showMessageDialog(null,"Digite uma opção valida"); } }

R

ah blz deu certo valeu aí :wink:

Criado 7 de março de 2013
Ultima resposta 7 de mar. de 2013
Respostas 3
Participantes 3