Tengo este pequeño código:

    Scanner vloz = new Scanner(System.in);
    int cisla = 0;
    int i = 0;
    while(i < 10){
            try {
                System.out.println("Vloz cislo " + i + ":");
                int cislo = Integer.parseInt(vloz.nextLine());
                 ++i;
                cisla = cisla + cislo;
                }
            catch(InputMismatchException exception){
                System.out.println("Nevlozil si cislo!");
                }
            }
    float priemer = cisla / i;
    System.out.println("Priemer cisel je " + priemer + ".");
    }   
}    

Pero siempre cuando lo ejecuto y escribo otros caracteres luego int, el programa falla y no se ejecuta a través de "catch". El objetivo del programa es cuando se escribe el otro mensaje de error show int, no agregue a int i y dé otra opción al usuario para agregar el número entero.

-3
Jozef Fujka 25 dic. 2016 a las 23:23

3 respuestas

La mejor respuesta

Debe capturar un NumberFormatException en lugar de un InputMismatchException así:

import java.util.Scanner;

class Main {
  public static void main(String[] args) {
    Scanner vloz = new Scanner(System.in);
    int cisla = 0;
    int i = 0;
    while(i < 10){
      try {
        System.out.print("Vloz cislo " + i + ":");
        int cislo = Integer.parseInt(vloz.nextLine());
        i++;
        cisla = cisla + cislo;
      } catch(NumberFormatException exception) {
        System.out.println("Nevlozil si cislo!");
      }
    }
    float priemer = cisla / i;
    System.out.println("Priemer cisel je " + priemer + ".");
  }   
}

Pruébelo aquí!

0
shash678 25 dic. 2016 a las 20:33

Capturas la excepción equivocada. El método { {X0}} arroja un NumberFormatException no un InputMismatchException. Cambie su cláusula catch a catch(NumberFormatException exception).

0
thatguy 25 dic. 2016 a las 20:33

Import java.util. *; demostración de clase pública {

public static void main (String []args ){

    Scanner vloz = new Scanner(System.in);
    int cisla = 0;
    int i = 0;
    while(i < 10){
            try {
                System.out.println("Vloz cislo " + i + ":");
                int cislo = Integer.parseInt(vloz.nextLine());
                 ++i;
                cisla = cisla + cislo;
                }
            catch(InputMismatchException exception){
                System.out.println("Nevlozil si cislo!");
                }
            }
    float priemer = cisla / i;
    System.out.println("Priemer cisel je " + priemer + ".");

} 

}

No estoy seguro de por qué se bloqueó, pero este código funciona. Creo que puede haber olvidado importar .java. *;

0
user7340747user7340747 26 dic. 2016 a las 00:19