문제

스캐너를 사용하여 라인별로 텍스트 파일을 읽었지만 각 입력을 통해 스캐너가 반복되기 때문에 줄 번호를 얻는 방법은 다음과 같습니다.

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 라인에있는 줄 번호를 알고 싶습니다. 어떻게 얻습니까?

도움이 되었습니까?

해결책

당신은 a를 사용할 수 있습니다 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());
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top