int num_lines = 0;
try {
if (file_stream.hasNextInt()) //line 81
{
num_lines = file_stream.nextInt();
}
} catch (NoSuchElementException e) {
System.err.println("The input is not valid and cannot be processed.");
}
即使我似乎已经在代码中解释了它,我仍然会收到此错误。在这个测试用例中,file_stream文件是空的,所以我想查看程序是否会捕获错误,显然它没有这样做:
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 Program1.main(Program1.java:81)
答案 0 :(得分:1)
NoSuchElementException
类方法返回tokens,将抛出 Scanner
异常。
来自JavaDoc:
一个简单的文本扫描程序,可以解析基本类型和字符串 使用正则表达式。
扫描仪使用分隔符模式将其输入分解为标记, 默认情况下匹配空格。然后可以得到所产生的令牌 使用各种下一个转换为不同类型的值 方法
例如,
List<Integer> ints=new ArrayList<Integer>();
try
{
int value=ints.iterator().next();
}catch(NoSuchElementException ex)
{
System.out.println(ex);
}
答案 1 :(得分:0)
我认为您可能会在代码中查找错误的位置。除非您从该流中读取多个线程,否则在hasNextInt()返回true之后,您无法获得NoSuchElementException。