Как я могу проверить целое число как пользовательский ввод? - PullRequest
0 голосов
/ 09 апреля 2020

Мне необходимо написать программу, которая будет проверять вводимые пользователем данные как целое число. У меня есть код, который будет работать на самом деле. Но я действительно не понимаю, как это работает .. Как будто я знаю, как использовать, но понятия не имею, как это работает за программой. Можете ли вы объяснить мне, как это на самом деле работает?

Кроме того, некоторые другие альтернативы могут использовать здесь команду try catch, но я в этом тоже не нуждаюсь ... так может кто-нибудь объяснить мне? я все еще новичок в Java.

Действительно ценю это!

while(!read.hasNextInt())  // i understood this pard at which the conditions will return true/false
    {
        System.out.println("Enter integer only: ");
        read.next();  // without this line of code, i will get an infinite loop, BUT WHY?
    }

    int num = 0;  // declaration of variable
    num = read.nextInt();  // and this actually store the last digit user input in read.hasNextInt()
                           // why would'nt it prompt the user to enter again? because usually it does
    System.out.print(num); // and finally output the num value

1 Ответ

1 голос
/ 09 апреля 2020

Ваше время l oop проверяет, не содержит ли сканер целое число, доступное для синтаксического анализа, путем блокировки. Если это условие истинно, вы просто вызываете next (), который очищает кэш сканеров. Если вы не очистите кеш, он всегда будет иметь целое число и будет продолжать блокироваться бесконечно. Вам нужно вызвать метод вроде next () или nextInt () для получения значения.

Вызов nextInt (), который у вас есть, не запрашивает ввод снова, потому что вы ничего не потребляли в то время как l oop, вы только что проверили, является ли ввод анализируемым целым числом.

Это разбивка вашего кода (псевдо);

while scanner doesnt have a parseable integer {
    consume that non parseable value
}
consume the parseable integer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...