Não relativo ao código, mas quanto à ideia, tenha um cuidado quanto ao que pede que seja digitado. Tente ser mais claro para o usuário, visto que ele pode digitar m ou f, pode digitar masculino ou feminino, então, informe o que e esperado, por exemplo.
JOptionPane.showInputDialog(“Digite o sexo:\nMasculino ou Feminino.”);
Ou algo como…
int sexo = JOptionPane.showInputDialog(“Informe o sexo:\n1 - Masculino\n2 - Feminino.”);
Dessa última forma, você estaria esperando valores inteiros e poderia tratar isso pelo código, inclusive com o próprio switch.
switch(sexo)
{
case 1: //instruções
break;
case 2: //instruções
break;
default: //instruções
break;
}
Pode ainda tentar prevenir quanto ao último exemplo, que seja informado uma string ao invés de um inteiro, com o uso do while, para repetir a pergunta até o valor informado ser um inteiro e obrigatoriamente 1 ou 2.
Um amigo me ajudou aqui agora com isso, enquanto eu estava tentando colocar da melhor maneira possível esse while.
Esse trecho agora não foi autoria minha.
boolean isValid = false;
do {
int sexo= Integer.parseInt(JOptionPane.showInputDialog(“Informe o sexo:\n1 - Masculino\n2 - Feminino.”));
isValid = sexo == 1 || sexo== 2;
if (!isValid) {
JOptionPane.showMessageDialog(null, “Valor inválido.”);
}
} while (!isValid);
O “do while” executa a pergunta ao menos uma vez, e em seguida valida a informação. Se estiver de acordo, segue o código fora do “do while”, se for valor inválido, fica repetindo a mensagem(repetindo dentro do “do while”) até que um valor válido seja informado pelo usuário.
Bolean é uma variável que aceita “true” ou “false”. Por padrão seu valor é “false”, para que seja informado 1 ou 2 pelo usuário e então alterá-la para “true”.
O “!” antes da verificação, significa negação.