我希望从用户那里收到一个Double,并处理在用户没有输入double/int的情况下引发的异常; 在这种情况下,我想要求用户再次插入金额.如果捕获到异常,我的代码会陷入循环,并继续打印"插入金额".
private static double inputAmount() {
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("Insert amount:");
try {
double amount = input.nextDouble();
return amount;
}catch (java.util.InputMismatchException e) {continue;}
}
}
Run Code Online (Sandbox Code Playgroud)
先感谢您.
awk*_*ksp 12
你的程序进入,当输入无效遇到因为一个无限循环nextDouble()并不会消耗无效令牌.因此,无论引起异常的任何令牌都将保留在那里,并在下次尝试读取双精度时继续引发异常.
这可以通过在块中放置nextLine()或next()调用catch以消耗导致抛出异常的任何输入,清除输入流并允许用户再次输入内容来解决.
| 归档时间: |
|
| 查看次数: |
25640 次 |
| 最近记录: |