2
respostas

tratamento InputMismatchException

Pessoal, estou com uma duvida cruel =(

Quero que o usuário digite um inteiro para armazenar em uma variável

Caso ele digite um numero retorna InputMismatchException

tentei fazer um tratamento para a exceção e forma que entre em um loop até que o usuário digite um int

o loop funciona, mas não passa pelo bloco do try, vai direto pro catch

Alguem me ajuda por favor

package testes;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Testes {

    public static void main(String[] args) {
        System.out.println("Digite um numero");
        Scanner Ler = new Scanner(System.in);

        for(int t = 0 ; t < 5; t++) {
            int te;
            try {
                 te = Ler.nextInt();    
                System.out.println(te);
                break;

                } catch(InputMismatchException e) {
                    System.out.println("Por favor digite um numero"); }
                }



    }

}
2 respostas

Olá, Higor!

Cara, consegui resolver esse problema da forma indicada abaixo. Não sei se é a ideal, mas eu consegui resolver dessa maneira. Basicamente, usei o try/catch dentro de uma estrutura do/while.

Usei como referência esse post: https://stackoverflow.com/questions/16816250/java-inputmismatchexception


import java.util.InputMismatchException;
import java.util.Scanner;

public class Testes {

    public static void main(String[] args) {

        Scanner ler = new Scanner(System.in);
        int numero = 0;

        do {

            try {
                System.out.print("Digite um numero: ");
                numero = ler.nextInt();
            } catch (InputMismatchException e) {
                System.out.println("Ops... você digitou caracteres. Precisamos que digite apenas números.");
            }
            ler.nextLine();

        } while (numero == 0);

        System.out.println(numero);

    }
}

Olá,

Bah, tem um bug nesse exemplo que fiz. Se o usuário digitar 0 vai dar problema. kkkk