Java 如何安全地扫描while循环中的整数?
我想扫描一个整数,并将其放入while循环中,这样,如果输入了无效条目,程序将要求输入另一个整数,但当我运行此程序时,它不允许我输入新的整数,只会多次打印无效条目Java 如何安全地扫描while循环中的整数?,java,user-input,Java,User Input,我想扫描一个整数,并将其放入while循环中,这样,如果输入了无效条目,程序将要求输入另一个整数,但当我运行此程序时,它不允许我输入新的整数,只会多次打印无效条目 do { System.out.println("Maximum number of Students:"); if(input.hasNextInt()) { maxstudents = input.nextInt(); if (maxstudents > 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");
}
} 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);
}
public static int getMaxStudents(扫描程序扫描){
做{
系统输出打印(“最大学生人数:”);
if(scan.hasNextInt()){
int maxStudents=scan.nextInt();
如果(最大学生数>0)
归还学生;
}
System.out.println(“输入有效的正整数”);
scan.nextLine()//
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);