Consulta sobre uso de try catch en java. Netbeans

publicado por: Anonymous
public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);

    int edad;

    boolean repetir = true;

    while (repetir) {
        System.out.println("introduce edad");

        try {
            edad = entrada.nextInt();
            repetir = false;
        } catch (InputMismatchException e) {
            entrada.nextLine();//Si quito esta linea entra en un bucle infinito.. Por qué? No entiendo porque se pone este codigo
            System.out.println("error");
        }
    }
}

Porque se pone este código en el catch.? entrada.nextLine();

Porque entra en un bucle infinito si lo quito?

solución

Aquella línea permite que el usuario ingresé al programa de nuevo una línea de texto. La excepción InputMismatchException es lanzada cuando el scanner recibe un valor de entrada que no espera.

Sin esta parte el programa entraría en un bucle infinito porque el la condición para que se repita el bucle while siempre es true. Dicho de otra manera, porque la variable repetir es inicializada con true y jamás haces que cambie de valor, por lo tanto se seguirá repitiendo el bucle while.

public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);

    int edad;

    boolean repetir = true;

    while (repetir) {
        System.out.println("introduce edad");

        try {
            edad = entrada.nextInt();
            repetir = false;
        } catch (InputMismatchException e) {
            repetir = false();
            // Ya puedes eliminar la línea que iba aquí.
            System.out.println("error");
        }
    }
}

Si haces esto podrás darle final al bucle cuando encuentre un error y haya entrado en el bloque catch. Con el anterior código podrás borrar la línea que obliga a la entrada del teclado por parte del usuario.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *