我正在使用扫描仪逐行读取文本文件,但是由于扫描仪遍历每个输入,如何获取行号?我的程序是这样的:
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 行。我怎么知道?
我正在使用扫描仪逐行读取文本文件,但是由于扫描仪遍历每个输入,如何获取行号?我的程序是这样的:
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 行。我怎么知道?
在扫描仪执行其操作时,您可以使用 aLineNumberReader
代替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());
}