0

Мне нужно защитить приложение от краша в случаи ввода букв в интовом сканнере. Но в данном случае, если ввести буквы, оно примет нужное значение, но при повторном прохождении цикла сканер пропускается. подскажите как исправить?

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

    System.out.println("Enter 1,2,3 or 0?");
    int a=0;

    for(int i=0;i<3;i++)
    {
        if(sc.hasNextInt()) a=sc.nextInt();
        else a=0;

        if(a==1) System.out.println("a 1");

        if(a==2) System.out.println("a 2");

        if(a==3) System.out.println("a 3");

        if(a==0) System.out.println("a 0"); 

    }   
    System.out.println("усё");
}

1 Answers1

0
int a = 0;
while (true) {
    try {
        Scanner scan = new Scanner(System.in);
        System.out.print("Enter 1,2,3 or 0?");
        a = scan.nextInt();
        if (a<0 || a>3) throw new InputMismatchException();
        break;
    } catch (java.util.InputMismatchException e) {
        System.out.println("Некорректный ввод!");
    }
}

System.out.println("a "+a);

System.out.println("усё");
  • не понимаю, что вы хотите сделать с введенной цифрой со сканера, но защищаться от ошибки ввода так – Дмитрий Dec 27 '17 at 21:44