我一直在努力让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)
答案 0 :(得分:2)
谢谢你的帮助,威廉。在阅读了很多关于是否使用.close()的矛盾信息之后找到了答案。我相信因为我不能胜任异常处理,我使用.close()让我陷入困境(Java IO: Exception Handling)。在这里,有一堆.close()在另一个类中产生了这个错误。
我读过“Java编程简介”,作者:梁(第10版),“注意:如果使用Eclipse或NetBeans等IDE, ,您将收到警告要求您关闭输入以防止潜在的资源泄漏。“ (我做了。我回应了添加.close()的所有地方。这是关于程序开始失败的时间)“忽略警告因为输入自动关闭你的程序终止时。在这种情况下,不会有资源泄漏。“ (第39页)
答案 1 :(得分:0)
我开发了一个类似的程序,使用扫描仪类从用户那里获取输入。这可能会有所帮助:
{{1}}