Ошибка при неправильном исключении ввода в потоке "main" - PullRequest
0 голосов
/ 20 сентября 2019

Возникла проблема, если я поставил int number = scanner.nextInt (); в скобку if и записал неправильный ввод, он работает хорошо.

Но если я не напишу его за пределами if, при вводе неверного ввода будет выдано следующее сообщение

Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextInt(Scanner.java:2258)
at java.base/java.util.Scanner.nextInt(Scanner.java:2212)
at UserInput.main(UserInput.java:15)

Код:

import java.util.Scanner;

public class UserInput {

public static void main(String[] args) {
    int Sum=0, counter = 0,no=1;
    Scanner scanner;
    scanner = new Scanner(System.in);

    do {
        System.out.println("Enter number #" + no + " = ");

        boolean result =  scanner.hasNextInt();
        int number = scanner.nextInt();

        if(result == true)
        {
            counter = counter + 1;
            Sum = Sum + number;
            no = no+1;
        }
        else
        {
            System.out.println("Invalid Input");
        }
        scanner.nextLine();
        }while(counter<10);
    System.out.println("Sum = " + Sum );
    scanner.close();
    }
}

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Если hasNextInt () возвращает false, это означает, что следующий токен сканера (token = фрагмент "сканируемого" объекта) не является целым числом.Если вы теперь вызываете метод nextInt (), хотя следующий токен на самом деле не является целым числом, вы получите исключение InputMismatchException.Как сказал Скотт, поместив вызов в оператор if, вы можете предотвратить это, потому что вы убедитесь, что следующий токен является целым числом, и вы действительно можете вызвать nextInt ().

0 голосов
/ 20 сентября 2019

Помещая его в if, вы не наберете nextInt, если не знаете, что его можно получить (т. Е. result - истина).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...