这个问题在这里已有答案:
我想扫描一个整数并将其放入while循环中,这样如果输入的是无效的条目,程序将要求输入另一个整数但是当我运行它时它将不允许我输入和新的整数并且只是打印无效多次进入。
do {
System.out.println("Maximum number of Students:");
if(input.hasNextInt()) {
maxstudents = input.nextInt();
if (maxstudents > 0) {
break;
}
} else {
System.out.println("Invalid entry");
}
} while(true);
将else更改为:
else {
System.out.println("Invalid entry");
input.nextLine();
}
因此,在无效输入时,您需要将光标移动到下一行,以便您可以再次接受输入。
@Nicholas K是对的。但我建议你为负整数的情况添加另一条警告信息,并将此代码移到单独的方法中。
public static int getMaxStudents(Scanner scan) {
do {
System.out.print("Maximum number of Students: ");
if (scan.hasNextInt()) {
int maxStudents = scan.nextInt();
if (maxStudents > 0)
return maxStudents;
}
System.out.println("Enter a valid positive integer number");
scan.nextLine(); // <-- this is mandatory
} while (true);
}
do {
System.out.println("Maximum number of Students:");
if(input.hasNextInt()) {
maxstudents = input.nextInt();
if (maxstudents > 0) {
break;
}
}
else {
System.out.println("Invalid entry:"+scanner.next());
}
}while(true);