While e comparação com String

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 :wink:

[code]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);
}

}[/code]


“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”

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"); } }

ah blz deu certo valeu aí :wink: