【发布时间】:2015-08-31 06:20:56
【问题描述】:
假设我需要不断询问用户,直到他输入double。
我所做的是我使用了一个while循环并检查是否有异常。
如果有异常,我会去询问下一个输入。
double bal = 0;
Scanner sc = new Scanner(System.in);
while (true) {
try {
System.out.println("Enter the balance");
bal = sc.nextDouble();
break;
} catch (Exception e) {
System.out.println("That isn't a number");
}
}
System.out.println("Bal is " + bal);
sc.close();
但是如果我输入一个非双精度,那么它不会要求下一个输入,继续打印以无限循环结尾的那两条线。
Enter the balance
XYZ
That isn't a number
Enter the balance
That isn't a number
Enter the balance
That isn't a number
Enter the balance
That isn't a number
....
我错过了什么?
【问题讨论】:
-
stackoverflow.com/questions/23676834/…(和其他)的可能重复
-
另外,捕获异常可能不是处理控制流的最佳方式。您可以(并且可能应该)改用 hasNextDouble
-
@yshavit 我也使用了
hasNextDouble(),它也以无限循环结束。不知道要丢弃该输入。所以我想问为什么会这样。这只是描述情况的一个说明性示例。
标签: java exception-handling double java.util.scanner