Tôi có một log file chứa dữ liệu sau nextLine() và hasNextLine():Vấn đề sử dụng các phương pháp Scanner
Shortest đường dẫn (2) :: RV3280-RV0973C-RV2888C
con đường ngắn nhất (1): : RV3280-RV2502C
đường dẫn (2) :: RV3280-RV2501C-RV1263
con đường ngắn nhất (2) :: RV2363-Rv3285-RV3280
Từ mỗi dòng, tôi yêu cầu số lượng trong phạm vi khung, tên ngắn nhất của protein đầu tiên (RV3280 trong dòng đầu tiên) và tên của protein cuối cùng (RV2888C trong dòng đầu tiên).
Tôi đã viết mã cho điều này bằng cách sử dụng đối tượng 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");
}
Tôi nhận được kết quả mong muốn nhưng tôi cũng nhận được thông báo lỗi. Đầu ra tôi nhận được cho tệp đầu vào ở trên là:
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)
Tại sao lỗi này xảy ra và cách sửa lỗi?
Hi Key, có nó hoạt động ngay sau khi thêm một dấu phân cách dòng. Tôi không nghĩ đến việc di chuyển Máy quét đến cuối dòng :) Cảm ơn bạn rất nhiều và cảm ơn bạn đã khắc phục. – Harish