How to get line number using scanner

前端 未结 2 1704
渐次进展
渐次进展 2020-12-11 16:47

I\'m using scanner to read a text file line by line but then how to get line number since scanner iterates through each input?My program is something like this:



        
相关标签:
2条回答
  • 2020-12-11 17:24

    Just put a counter in the loop:

    s = new Scanner(new BufferedReader(new FileReader("input.txt")));
    
    for (int lineNum=1; s.hasNext(); lineNum++) {
       System.out.print("Line number " + lineNum + ": " + s.next());
    }
    
    0 讨论(0)
  • 2020-12-11 17:48

    You could use a LineNumberReader in place of the BufferedReader to keep track of the line number while the scanner does its thing.

    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());
        }
    }
    

    Note: The "obvious" solution I first posted does not work as the scanner reads ahead of the current token.

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

    0 讨论(0)
提交回复
热议问题