cómo re-try / catch de entrada excepción desajuste sin ser descubierto por bucle infinito

votos
2

Estoy tratando de obtener información de usuario para construir una red para el juego weeper de una mina 2d, el proceso va bastante suave cuando pase valores válidos para el escáner, pero cuando intento cosas no válidos que pasa a través del bucle infinito hasta el bloque try se tratan con los recursos que debe cerrar el escáner con cada nuevo intento, lo que parece que no se cierra cuando se imprime la cadena en la captura infinitamente

int gridSize = 0;
    System.out.println(how much do you want the grid's size);
    try (Scanner scanner = new Scanner(System.in)) {
        while (gridSize == 0) {
            gridSize = scanner.nextInt();
            scanner.next();
        }
    } catch (NoSuchElementException e) {
        System.out.println(try again);
    }
Publicado el 20/10/2018 a las 10:24
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Estás agarrar la excepción equivocado - si la entrada no es una int, una InputMismatchExceptionserá lanzada. Pero a pesar de esto se puede hacer más fácil mediante el uso de hasNextInt():

try (Scanner scanner = new Scanner(System.in)) {
    while (!scanner.hasNextInt()) {
        System.err.println("Try again, this time with a proper int");
        scanner.next();
    }
    gridSize = scanner.nextInt();
} 
Respondida el 20/10/2018 a las 10:54
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more