我想扫描一个整数并将其放入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);
答案 0 :(得分:3)
将else更改为:
else {
System.out.println("Invalid entry");
input.nextLine();
}
因此,对于无效输入,您需要将光标移至下一行,以便您可以再次接受输入。
答案 1 :(得分:0)
@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);
}
答案 2 :(得分:0)
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);