如何在while循环中安全地扫描整数?

时间:2019-02-17 05:49:35

标签: java user-input

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

3 个答案:

答案 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);