次のデータを含むログファイルがあります。
最短パス(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)
このエラーが発生する理由と、それを修正するにはどうすればよいですか?