我需要用户从键盘上输入数字1-5或9,并希望保持提示,直到他们输入正确的数字。下面是我的代码:
String taskInput = kb.nextLine();
Scanner kbString = new Scanner(taskInput);
boolean validInput = false;
boolean validSelection;
while(!validInput){
validSelection = false;
while (!kbString.hasNextInt()){
System.out.print("Please enter a task number; ");
taskInput = kb.nextLine();
kbString = new Scanner(taskInput);
}
while(!validSelection){
if(kbString.hasNextInt()) {
nextTask = kbString.nextInt();
if(nextTask < 1 || (nextTask > 5 && nextTask != 9)) {
validSelection = true;
}else{
validInput = true;
validSelection = true;
}
}
}
}
这是有效的,但我发现它有点令人困惑,因为我们需要设置validSelection = true,即使当用户输入一个坏的数字,例如7。有没有更干净的方法?
我想到了一个更好的方法:
boolean valid = false;
while (!valid) {
valid = kb.hasNextInt() ;
if (valid) {
nextTask = kb.nextInt();
if(nextTask < 1 || (nextTask > 5 && nextTask != 9)) {
System.out.print("please enter task number (1-5, or 9); ");
valid = false;
}
}
else {
System.out.print("Please enter a valid number");
}
kb.nextLine();
}