[英]Why am I getting this Scanner error?
我正在使用2个扫描仪来读取文件。 一个人抓住第一和第二行(因为我还需要其他东西)
int a = fileScanner.nextInt();
fileScanner.nextLine();
int b = fileScanner.nextInt();
fileScanner.nextLine();
然后,我逐行抓取文件的其余部分,然后将一行发送到另一个类。
while( fileScanner.hasNextLine() ){
line = fileScanner.nextLine();
NameRecord current = new NameRecord (line, startYear, decades);
names.add(current);
}
(忽略其余的代码。)然后我选择该行的第一个Word,然后剩下的就是我需要存储在数组中的数字,因此我使用以下代码:
Scanner lineSc = new Scanner(line);
dataName = lineSc.next();
for (int i = 0; i < decades; i++) {
yearData[i] = Integer.parseInt(lineSc.next());
}
lineSc.close();
但是最后,我得到了这个错误:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at NameRecord.<init>(NameRecord.java:36)
at Names.<init>(Names.java:34)
at NameSurfer.simpleTest(NameSurfer.java:176)
at NameSurfer.main(NameSurfer.java:202)
我究竟做错了什么?
因为在行
yearData[i] = Integer.parseInt(lineSc.next());
你实际上调用next()
后next()
已经被称为行dataName = lineSc.next();
因此,在文件末尾,当实际没有更多数据时,您尝试读取多一份数据。
在decades
变量”值大于您尝试读取,同时它必须是长度的线的实际长度大于lineSc.length()-1
以下。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.