【发布时间】:2016-05-30 01:15:45
【问题描述】:
我正在尝试从 System.in 中获取一个整数,并且我想捕获最终的错误。这是代码:
int dim;
boolean done = false;
while(!done)
{
try
{
dim = in.nextInt();
done=true;
}
catch(InputMismatchException e)
{
System.out.println("I need an integer");
}
}
我得到的结果是错误字符串的无限循环。我做错了什么?我是否试图捕获错误的异常?
【问题讨论】:
-
你说得对,我是在匆忙复制代码后添加了布尔值,当然当声明done时为false。
-
为什么不重复try块呢?
-
您是否设置了扫描仪?如果有,请将其包含在代码中。
-
我做了,它第一次要求输入。我在 API 文档中找到了答案。谢谢!
-
我刚刚找到了确切的答案:当扫描器抛出 InputMismatchException 时,扫描器不会传递导致异常的令牌,因此可以通过其他方法检索或跳过它。你是从这里得到的吗:docs.oracle.com/javase/7/docs/api/java/util/Scanner.html
标签: java exception while-loop try-catch infinite-loop