Java - Tratamiento de excepciones dentro de un bucle

 
Vista:
sin imagen de perfil

Tratamiento de excepciones dentro de un bucle

Publicado por Pablo (1 intervención) el 18/10/2017 11:08:42
Hola a todos.

Estoy empezando con java y me he encontrado un problema que no consigo solucionar. El programa que pretendo realizar es leer dos números enteros mientras los dos datos leidos no sean correctos. Es decir, si en cualquiera de los dos datos se introduce algo que no es un entero, que se vuelva a repetir el bucle do-while. A continuación dejo el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int a = 0, b = 0;
boolean est;
Scanner sc = new Scanner(System.in);
 
do {
    try {
        est = false;
        System.out.print("Introduce el primer numero a: ");
        a = sc.nextInt();
        System.out.print("Introduce el segundo numero b: ");
        b = sc.nextInt();
 
    } catch (InputMismatchException exc) {
 
        System.out.println("Error, lo introducido no es valido: " + exc.getMessage());
        est = true;
    }
 
}while(est);

El caso es que al introducir algo que no sea un entero, el bucle se repite de forma indefinida. ¿Dónde puede estar el problema?

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 144
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Tratamiento de excepciones dentro de un bucle

Publicado por Thanatos (97 intervenciones) el 18/10/2017 18:34:02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Scanner sc = new Scanner(System.in);
int a = 0;
int b = 0;
 
do {
    try {
        System.out.print("Introduce el primer numero a:  ");
        a = sc.nextInt();
        System.out.print("Introduce el segundo numero b: ");
        b = sc.nextInt();
        break;
    } catch (InputMismatchException ime) {
        System.out.println("Error, entrada incorrecta: " + ime.getMessage());
        sc.nextLine();
    }
} while (true);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar