如何使用扫描仪获取行号

时间:2009-08-26 04:22:02

标签: java java.util.scanner

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

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行。我怎么能得到它?

2 个答案:

答案 0 :(得分:16)

您可以使用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());
}

<击>

答案 1 :(得分:10)

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

s = new Scanner(new BufferedReader(new FileReader("input.txt")));

for (int lineNum=1; s.hasNext(); lineNum++) {
   System.out.print("Line number " + lineNum + ": " + s.next());
}