gpt4 book ai didi

java - 使用 Scanner 的 nextLine() 和 hasNextLine() 方法时出现问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:33:18 26 4
gpt4 key购买 nike

我有一个包含以下数据的日志文件:

最短路径(2)::RV3280-RV0973C-RV2888C
最短路径(1)::RV3280-RV2502C
最短路径(2)::RV3280-RV2501C-RV1263
最短路径(2)::RV2363-Rv3285-RV3280

在每一行中,我需要括号内的数字、第一个蛋白质的名称(第一行中的 RV3280)和最后一个蛋白质的名称(第一行中的 RV2888C)。

我已经使用 Scanner 对象为此编写了代码。

try{
Scanner s = new Scanner(new File(args[0]));
while (s.hasNextLine()) {
s.findInLine("Shortest path\\((\\d+)\\)::(\\w+).*-(\\w+)"); // at each line, look for this pattern
MatchResult result = s.match(); // results from
for (int i=1; i<=result.groupCount(); i++) {
System.out.println(result.group(i));
}
s.nextLine(); // line no. 29
}
s.close();
}

catch (FileNotFoundException e) {
System.out.print("cannot find file");
}

我得到了想要的结果,但我也收到了一条错误消息。我为上述输入文件得到的输出是:

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1516)
at nearnessindex.Main.main(Main.java:29)
2
RV3280
RV2888C
1
RV3280
RV2502C
2
RV3280
RV1263
2
RV2363
RV3280
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

为什么会出现这个错误,如何纠正?

最佳答案

您的输入数据可能没有以会导致此问题的行分隔符结尾。调用 findInLine 将扫描仪移过匹配模式,如果您在调用 nextLine 时位于输入数据的末尾,它将抛出 NoSuchElementException

无需过多重新安排代码的简单解决方法是结束 while 循环:

if (s.hasNextLine()) {
s.nextLine();
}

关于java - 使用 Scanner 的 nextLine() 和 hasNextLine() 方法时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3652586/

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