Ajuda com validação em Java

Saudações.

Sou estudante do 1º semestre de ADS e tenho uma lista pra resolver e um que estou com dúvida é basicamente sobre um campeonato, preciso mostrar a categoria de acordo com a idade e o peso ideal ( com uma fórmula) baseado no sexo do atleta.

Eu fiz uma condição para o usuário digitar 1 para masculino e 2 para feminino, mas gostaria de saber como faço pra quando digitar qualquer coisa fora disso, retornasse para o campo da resposta novamente.

No caso eu uso uma classe e depois faço a main.

   public String verificaSexo()  {//condição para sexo, 1 masculino e 2 feminino
            *if* (sexo == 1) {
                return "Masculino";
            } else if (sexo == 2) {
                return "Feminino";
            }
            return "Sexo inserido é inválido";

    }

NO CASO MINHA MAIN ESTÁ ASSIM A PARTE DE MOSTRAR OS RESULTADOS:

A CONVERSÃO DA VARIÁVEL SEXO.

int sexo=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o sexo do atleta: "+"\nDigite 1 para Masculino:"+"\nDigite 2 para Feminino:","Informações dos Atletas",3));

DEPOIS DE CHAMAR INSTANCIAR E CHAMAR O OBJETO.

   JOptionPane.showMessageDialog(null, "O atleta se chama: "+dados.getNome()+" "+dados.getSobrenome()+"\nSexo: " + dados.verificaSexo()+"\nO Atleta tem: "+dados.getIdade()+" anos"+
                                "\nEstá participando da categoria: "  + dados.categoriaOficial() + "\nO peso atual é de: "+dados.getPeso()+
                                "\nO peso ideal para o Atleta é de: "+ dados.verificaPeso(),"Informações dos Atletas",1);

Meu código está resumido por conta das variáveis, se tiver alguma coisa difícil de entender posto novamente corrigido, é a primeira vez que uso o fórum.

Poderia ser String ou char, mas, ok.

int sexo = int sexo=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o sexo do atleta: "+"\nDigite 1 para Masculino:"+"\nDigite 2 para Feminino:","Informações dos Atletas",3));
while(sexo < 1 || sexo > 2) {
    JOprionPane.showMessageDialog(null, "Erro: Digite 1 para Masculino ou 2 para Feminino");
    sexo = int sexo=Integer.parseInt(JOptionPane.showInputDialog(null,"Digite o sexo do atleta: "+"\nDigite 1 para Masculino:"+"\nDigite 2 para Feminino:","Informações dos Atletas",3));
}

Deve resolver

1 curtida

Isso mesmo resolveu o problema, muito obrigado.
Em relação a escolha de números foi uma indicação aqui do fórum mesmo de outro tópico, para não dar chances do usuário digitar qualquer coisa.
Mas nos meus códigos futuros colocarei com char.
Obrigado.

Mas o usuário pode, sempre, digitar outra coisa. Nunca duvide da capacidade do usuário.
Neste caso, seria bom tentar um desses

Sugestões:
Avalie a possibilidade de utilizar combobox. Se não for possível, valide apenas para o usuário não digitar um número decimal do tipo “1.20”;

É estou lendo sobre isso e irei fazer isso mesmo, obrigado :slight_smile: