Сканирование входных данных в Java с помощью сканера
Этот код проверяет, является ли введенный пользователем код допустимым. если это не число, он будет продолжать цикл, пока не получит число. после этого он проверит, находится ли это число в границах или меньше, чем граница. он будет продолжать цикл, пока не получит входящий номер. но моя проблема здесь в том, что когда я печатаю выбор, он показывает только предыдущий номер после последнего номера, который был вставлен. почему так происходит?
public void askForDifficulty(){
System.out.println("Difficulty For This Question:n1)Easyn2)Mediumn3)HardnChoice: ");
int choice = 0;
boolean notValid = true;
boolean notInbound = true;
do{
while(!input.hasNextInt()){
System.out.println("Numbers Only!");
System.out.print("Try again: ");
input.nextLine();
}
notValid = false;
choice = input.nextInt();
}while(notValid);
do{
while(input.nextInt() > diff.length){
System.out.println("Out of bounds");
input.nextLine();
}
choice = input.nextInt();
notInbound = false;
}while(notInbound);
System.out.println(choice);
}
1 ответ:
Это происходит потому, что
input.nextInt()
внутри условияwhile
потребляет целое число, поэтому следующий за ним читает следующий. EDIT Вам также нужно объединить два цикла, например:int choice = 0; for (;;) { while(!input.hasNextInt()) { System.out.println("Numbers Only!"); System.out.print("Try again: "); input.nextLine(); } choice = input.nextInt(); if (choice <= diff.length) break; System.out.println("Out of bounds"); } System.out.println(choice);