为什么我在Java中一次又一次地得到这个noelementexception,我该如何解决它?

时间:2016-06-02 12:37:33

标签: java

http://ideone.com/HqKVDt

我有以下代码:

 while (true) {
     if (flag == 0) {
        System.out.println("1. Display all staff");
        System.out.println("2. Clear schedule");
        System.out.println("3. Display schedule");
        System.out.println("4. Assign shift to casual employee");
        System.out.println("5. Assign shifts to permanent employee");
        System.out.println("6. Calculate total weekly wages");
        System.out.println("7. Exit Program");

        while (true) {
            System.out.println("Enter your selection");
            Scanner in = new Scanner(System.in); // in these lines
            n = in.nextInt();   // in these lines
            if (n <= 0 || n > 7) {
                System.out.println("Invalid Selection - must be between 1 and 7.");
                break;
            }
        }
    }

现在,每当我运行程序时,它都会给我以下编译错误:

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:862)
    at java.util.Scanner.next(Scanner.java:1485)
    at java.util.Scanner.nextInt(Scanner.java:2117)
    at java.util.Scanner.nextInt(Scanner.java:2076)
    at EmployeeDriverSystem.main(Main.java:61) 

第61行是注释&#34;在这些行中的行&#34;

1 个答案:

答案 0 :(得分:1)

您在一段时间后发布了此代码。您现在提到的 not 的内容是您尝试在ideone上运行它,其中不会暂停执行用户输入,而是必须在运行之前传递标准输入程序。在您的计算机上通过控制台尝试此操作,它将在没有NoSuchElementException的情况下运行。

您在ideone上的无限while循环中获得用户输入。它不会按预期工作,因为除非最后提供退出条件的输入,否则不能事先提供无限输入。

编辑

作为无缘无故拒绝的人的一个例子:http://ideone.com/dmBMJO
您得到java.util.NoSuchElementException,因为标准输入为空。