Colocar variavel pra ler somente inteiro

5 respostas
java
Vinicius_Aparecido_D

Ola, estou fazendo um exercicio da faculdade que consiste em criar uma agenda, o meu problema é que eu quero que a variavel que eu uso para opção no menu leia só inteiro, fiz um teste e na hora que eu coloco qualquer coisa que nao seja um numero ele da o seguinte erro.

Exception in thread main java.util.InputMismatchException

at java.util.Scanner.throwFor(Scanner.java:864)

at java.util.Scanner.next(Scanner.java:1485)

at java.util.Scanner.nextInt(Scanner.java:2117)

at java.util.Scanner.nextInt(Scanner.java:2076)

Me desculpem qualquer erro, meu primeiro topico no site.

5 Respostas

darlan_machado

E o que você fez? Como fez?

Vinicius_Aparecido_D
System.out.println("1 - Novo evento");
        System.out.println("2 - Ver eventos");
        System.out.println("0 - Sair");
        System.out.print("\nOpção: ");

        opc = ler.nextInt();

        try {
            if (opc < 0 || opc > 2) {

                throw new NumberFormatException("\nEscolha uma opção valida.\n");
            }
        } catch (NumberFormatException e) {
            System.out.println(e.getMessage());
        }

No caso fiz uma exceção caso a variável seja menos que 0 ou maior que 2.

Vinicius_Aparecido_D

Estava tentando usar o NumberFormatException mas ele continua finalizando o programa quando eu coloco qualquer coisa que nao seja um inteiro.

darlan_machado

Esqueça os nextBlablabla (nextInt, nextDouble, nextFloat, etc)
Use o nextLine

String input = ler.nextLine();
try {
    opc = Integer.valueOf(input);
    if (opc < 0 || opc > 2) {
       throw new NumberFormatException("\nEscolha uma opção valida.\n");
   }
} catch (Exception ex) {
    System.out.println(e.getMessage());
}
Vinicius_Aparecido_D

muito obrigado.

Criado 21 de março de 2018
Ultima resposta 21 de mar. de 2018
Respostas 5
Participantes 2