gpt4 book ai didi

java - 如何在java中正确结束长度不确定的文件扫描器while循环

转载 作者:行者123 更新时间:2023-12-01 19:06:06 26 4
gpt4 key购买 nike

我编写了一个函数来扫描棒球统计数据的制表符分隔文件。

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 循环,但我不能,因为团队规模在技术上可能会有所不同。如何正确结束文件扫描器 while 循环以便关闭扫描器?

最佳答案

来自:Javadocs for Scanner.next()

Throws: NoSuchElementException - if no more tokens are available

当文件中没有更多行时,调用 s.next() 会引发 NoSuchElementException 异常。您还调用了 s.next() 两次,一次在 while() 中,一次在循环内。您确实应该被称为 while(s.hasNext())

关于java - 如何在java中正确结束长度不确定的文件扫描器while循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10068935/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com