如何使用扫描仪获取行号

我正在使用扫描仪逐行读取文本文件但是如何获取行号,因为扫描程序遍历每个输入?我的程序是这样的:

s = new Scanner(new BufferedReader(new FileReader("input.txt"))); while (s.hasNext()) { System.out.print(s.next()); 

这工作正常,但例如:

 1,2,3 
 3,4,5

我想知道它的行号,这意味着1,2,3在第1行,而3,4,5在第2行。我怎么做到的?

您可以使用LineNumberReader代替BufferedReader来跟踪扫描仪执行其操作时的行号。

 LineNumberReader r = new LineNumberReader(new FileReader("input.txt")); String l; while ((l = r.readLine()) != null) { Scanner s = new Scanner(l); while (s.hasNext()) { System.out.println("Line " + r.getLineNumber() + ": " + s.next()); } } 

注意:我首次发布的“明显”解决方案不起作用,因为扫描程序在当前令牌之前读取。

 r = new LineNumberReader(new FileReader("input.txt")); s = new Scanner(r); while (s.hasNext()) { System.out.println("Line " + r.getLineNumber() + ": " + s.next()); } 

只需在循环中放置一个计数器:

 s = new Scanner(new BufferedReader(new FileReader("input.txt"))); for (int lineNum=1; s.hasNext(); lineNum++) { System.out.print("Line number " + lineNum + ": " + s.next()); }