Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何安全地扫描while循环中的整数?_Java_User Input - Fatal编程技术网

Java 如何安全地扫描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) {

我想扫描一个整数,并将其放入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);
}
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);