java.util.Scanner.throwFor(未知来源)

时间:2017-03-22 23:02:21

标签: java java.util.scanner

我一直在努力让Scanner接受12小时的用户输入 今天。早期尝试工作正常。我也试过用 的的BufferedReader 即可。

似乎永远不会达到这条线:

userMenuInput = reader.nextInt();

我不接受失败。

public int displayMenu2() {

    System.out.println("--------------------------");
    System.out.println("        MENU 2              ");
    System.out.println("--------------------------");
    System.out.println("");
    System.out.println("PRESS 2 - Finalize sale");
    System.out.println("PRESS 3 - Cancel sale");
    System.out.println("--------------------------");

    int userMenuInput = 0;

    Scanner reader = new Scanner(System.in);

    System.out.print(">> ");

    //Error HERE....

    userMenuInput = reader.nextInt();

    if (userMenuInput == 0) {

        userMenuInput = reader.nextInt();
        System.out.println("" + reader.nextInt());
    }

    reader.close();

    //BufferedReader reader2 = new BufferedReader(new InputStreamReader(System.in));
    //System.out.print(">> ");

    //String inputString = reader2.readLine();
    //inputString = reader2.readLine();

    //userMenuInput = Integer.parseInt ( inputString );
    //           
    //      while(userMenuInput != 2 || userMenuInput != 3 )
    //      {
    //         System.out.println("Please enter a valid input!");
    //         System.out.print(">>");
    //         inputString = reader2.readLine();
    //         inputString = reader2.readLine();
    //         userMenuInput = Integer.parseInt ( inputString );
    //}

    return userMenuInput;
}

输出:

--------------------------
    MENU 2              
--------------------------

PRESS 2 - Finalize sale
PRESS 3 - Cancel sale
--------------------------
>> Exception in thread "main" java.util.NoSuchElementException
  at java.util.Scanner.throwFor(Unknown Source)
  at java.util.Scanner.next(Unknown Source)
  at java.util.Scanner.nextInt(Unknown Source)
  at java.util.Scanner.nextInt(Unknown Source)
  at CashRegister.displayMenu2(CashRegister.java:263)
  at Driver.main(Driver.java:207)

2 个答案:

答案 0 :(得分:2)

谢谢你的帮助,威廉。在阅读了很多关于是否使用.close()的矛盾信息之后找到了答案。我相信因为我不能胜任异常处理,我使用.close()让我陷入困境(Java IO: Exception Handling)。在这里,有一堆.close()在另一个类中产生了这个错误。

我读过“Java编程简介”,作者:梁(第10版),“注意:如果使用Eclipse或NetBeans等IDE, ,您将收到警告要求您关闭输入以防止潜在的资源泄漏。“ (我做了。我回应了添加.close()的所有地方。这是关于程序开始失败的时间)“忽略警告因为输入自动关闭你的程序终止时。在这种情况下,不会有资源泄漏。“ (第39页)

答案 1 :(得分:0)

我开发了一个类似的程序,使用扫描仪类从用户那里获取输入。这可能会有所帮助:

{{1}}