gpt4 book ai didi

Java 扫描器有NextLine NoSuchElementException?

转载 作者:行者123 更新时间:2023-12-02 13:25:12 26 4
gpt4 key购买 nike

我正在尝试逐行读取一个大型 csv 文件,以查找其中字符串出现的次数。

这是执行此操作的代码:

public int getOffset(File file, String searched) throws FileNotFoundException {
Scanner scanner = new Scanner(file).useDelimiter(System.getProperty("line.separator"));
int occurences = 0;
while (scanner.hasNextLine()) {
String s = scanner.next();
if (s.indexOf(searched) >= 0) {
occurences++;
}
}
return occurences;
}

但是,在读取文件的最后一行后,它会再次检查 while 条件,并退出并出现此异常:

java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:838)
at java.util.Scanner.next(Scanner.java:1347)
at fr.sgcib.cva.mat.MatWriter.getOffset(MatWriter.java:83)
at fr.sgcib.cva.mat.MatWriter.writeFooter(MatWriter.java:71)
at fr.sgcib.cva.mat.NettingNodeHierarchyExtract.getLeNodes(NettingNodeHierarchyExtract.java:65)
at fr.sgcib.cva.mat.Mat.main(Mat.java:55)

为什么它没有检测到文件末尾?

最佳答案

使用String s = Scanner.nextLine();而不是String s = Scanner.next();

这意味着您的代码将如下所示:

public int getOffset(File file, String searched) throws FileNotFoundException {
Scanner scanner = new Scanner(file).useDelimiter(System.getProperty("line.separator"));
int occurences = 0;
while (scanner.hasNextLine()) {
String s = scanner.nextLine();
if (s.indexOf(searched) >= 0) {
occurences++;
}
}
return occurences;
}

一般来说,使用 Scanner 时,您的 has... 条件需要与 next... 数据检索方法相匹配

关于Java 扫描器有NextLine NoSuchElementException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23604794/

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