我写了一个函数来扫描一个制表符分隔的棒球统计文件。
public static ArrayList dataRead() throws FileNotFoundException {
//ArrayList array = new ArrayList<ArrayList>();
Scanner s = new Scanner(new File("c:\\stats.txt")).useDelimiter("\r");
ArrayList<String> array = new ArrayList<String>();
int i = 0;
while(s.next() != null) {
String currentLine = s.next();
Scanner split = new Scanner(currentLine).useDelimiter("\t");
for(int j = 0; j < 16; j++) {
System.out.print(split.next() + " ");
j++;
}
System.out.println("\r");
}
s.close();
return array;
}
此功能一直有效,直到文件结束。据我所知,while 循环应该在文件末尾关闭,因为它返回 null,但我不断收到 noSuchElement 错误。如果我能保证文件大小,我会使用一个带有大小的 for 循环,但我不能,因为团队规模在技术上可能会有所不同。如何在循环时正确结束文件扫描仪以便关闭扫描仪?