【发布时间】:2021-11-16 22:08:20
【问题描述】:
我正在尝试使用 Scanner.nextDouble(); 向用户询问双精度值;但在我有机会输入任何内容之前,我得到了 NoSuchElementException。从我在文档中可以看到,这意味着 Scanner 位于输入的末尾。但是,我不明白当扫描程序从 System.in 读取而不是文件时会发生这种情况。
是否有可能是打开其他扫描仪导致了这种情况?我不认为 应该 是这种情况,因为在打开和关闭另一个 Scanner 的代码之前成功运行了另一种方法。但我对 Scanner 的来龙去脉(或其他很多东西!)了解得不够多,不知道这是否是问题所在。
这是我目前所处的位置,经过多次尝试重新编写此代码以使其正常工作的失败:
public static double collectDepositAmount(int accountNum){
System.out.print("Enter how much you would like to deposit in Account #" + accountNum + ": $");
Scanner userInput = new Scanner(System.in);
double finalDeposit;
try{
double inputDeposit;
inputDeposit = userInput.nextDouble();
在那之后还有更多,但异常总是在userInput.nextDouble(); 处引发。 catch 块只是在寻找 InputMismatchException,我在返回一个有效的 double 之前关闭了 userInput。
【问题讨论】:
-
当关闭在
System.in上创建的Scanner实例同时关闭System.in时会出现这个著名的问题,因此之后无法读取用户输入。
标签: java java.util.scanner nosuchelementexception system.in