Я создал программу с помощью сканера, чтобы взять в ряд от пользователя и сохранить его на «а», когда это целое число от 1 до 100. Пожалуйста, смотрите файл Java ниже:Консольные Игнорирование входы
public class Parity_Check {
private static Scanner sc;
public static void main(String[] args) throws InterruptedException {
sc = new Scanner(System.in);
int a, b;
System.out.print("Enter a number between 1 and 100: ");
while(true) {
b = 0;
if(!sc.hasNextInt()) {
System.out.print("That isn't an integer! Try again: ");
sc.next();
}
else{
b = sc.nextInt();
if(b < 1 || b > 100) {
System.out.print("That integer isn't between 1 and 100! Try again: ");
sc.next();
}
else{
a = b;
break;
}
}
}
System.out.print("The number is: "+a+".");
}
}
Проблема, с которой я столкнулся, заключается в следующем: После того, как программа вернет «Это целое число не от 1 до 100! Повторите попытку: «он ждет два входа от пользователя (а не тот, который он должен), первый из которых полностью игнорируется! Вот сеанс консоли я побежал, чтобы проиллюстрировать эту проблему:
"Enter a number between 1 and 100: 2.5
That isn't an integer! Try again: 101
That integer isn't between 1 and 100! Try again: Apple.
42
The number is: 42.”
Как вы можете видеть, что даже не обратил внимания на вход "Apple".
я полностью потерял, почему это не работает, как это должно , например, так:
"Enter a number between 1 and 100: 2.5
That isn't an integer! Try again: 101
That integer isn't between 1 and 100! Try again: Apple.
That isn't an integer! Try again: 42
The number is: 42.”
Я новичок в Java так что ответ, который хорошо объяснил бы находкой; Меня больше интересует, почему это не работает, как исправить это, потому что, надеюсь, я смогу научиться.
Я использую последнюю версию 64-битного Eclipse, кстати.
А, так что я удаляю целое число из потока, когда я устанавливаю его на него? Отличный ответ, большое спасибо! – DanielDC88