Java 中的"Scanner.nextLine()"确实跳过,"NoLineFound" -Exception



下面的代码从一个名为*Ergebnisse 00_01*的文件中读取一些数据,我想显示这个文件(System.out.println(..);)。因此,一些空白行丢失,其他一些数据也没有打印出来。最后,java.util.NoSuchElementException: No line found出现了,但为什么呢?我做错了什么?

ArrayList<String> singleParts = new ArrayList<String>();
try {
    int index = 0;
    scanner = new Scanner( new File("files/Ergebnisse 00_01.txt") );
    while ( scanner.hasNextLine() )  {
        singleParts.add(scanner.nextLine());
        System.out.println(index+": "+scanner.nextLine() );
        index++;
    }
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (Throwable te) {
    te.printStackTrace();
} 

结果应该是(这里前面没有索引):

----------
1.Spieltag 00/01
11.08.2000 - 20:15 Uhr  (7.) Borussia Dortmund 1:0 FC Hansa Rostock (12.)
Herrlich (61.) 1:0
12.08.2000 - 15:30 Uhr  (13.) 1.FC Kaiserslautern 0:1 VfL Bochum (8.)
Buckley (62.) 0:1
12.08.2000 - 15:30 Uhr  (5.) Bayer 04 Leverkusen 2:0 VfL Wolfsburg (15.)
Kirsten (14.) 1:0
Kirsten (24.) 2:0
12.08.2000 - 15:30 Uhr  (1.) SC Freiburg 4:0 VfB Stuttgart (18.)
Dreyer (4.) 1:0
Zeyer (28.) 2:0
Baya (48.) 3:0
Dorn (80.) 4:0

实际产出:

0: 1.Spieltag 00/01
1: Herrlich (61.) 1:0
2: 
3: 12.08.2000 - 15:30 Uhr   (5.) Bayer 04 Leverkusen 2:0 VfL Wolfsburg (15.)
4: Kirsten (24.) 2:0
5: 
6: Baya (48.) 3:0

这是因为你调用scanner.nextLine()两次,但你只打印它一次。每次调用scanner.nextLine()时,将扫描器推进到下一行。

试试这个:

    String next = scanner.nextLine();
    singleParts.add(next);
    System.out.println(index+": "+next );

相关内容

  • 没有找到相关文章