2009-08-26 30 views
7

Tôi đang sử dụng máy quét để đọc một dòng tập tin văn bản bằng dòng nhưng sau đó làm thế nào để có được số dòng từ lặp quét qua từng đầu vào chương trình của tôi là một cái gì đó như thế này:Làm thế nào để có được số dòng sử dụng máy quét

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

while (s.hasNext()) { 
System.out.print(s.next()); 

này hoạt động tốt nhưng ví dụ:

 
1,2,3 
3,4,5 

tôi muốn biết số dòng của nó có nghĩa là 1,2,3 là phù hợp 1 và 3,4,5 là phù hợp 2.How nào để tôi nhận được rằng ?

Trả lời

16

Bạn có thể sử dụng LineNumberReader thay cho số BufferedReader để theo dõi số dòng trong khi máy quét thực hiện việc đó.

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

Lưu ý: Các "rõ ràng" Giải pháp đầu tiên tôi đăng tải không hoạt động như máy quét đọc trước các dấu hiệu hiện tại.

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

while (s.hasNext()) { 
    System.out.println("Line " + r.getLineNumber() + ": " + s.next()); 
} 

+0

Đó là một điều đáng tiếc vẫn không có giải pháp tốt hơn so với việc tạo ra một máy quét mỗi dòng, mặc dù. Tôi vấp phải vấn đề tương tự như giải pháp "ngây thơ" đầu tiên của bạn, Máy quét đọc quá nhiều phía trước và dường như không có cách nào để thiết lập một bộ đệm nhỏ hơn. – Joffrey

9

Chỉ cần đặt một bộ đếm trong vòng lặp:

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

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

Tôi nghĩ rằng điều này chỉ hoạt động nếu bạn có .useDelimiter() được đặt thành dòng mới. Nếu bạn quét tìm khoảng trắng (ví dụ: từ), thay vào đó, tính năng này sẽ đếm từ. – Roalt

+1

Tôi đã cập nhật ví dụ để sử dụng hasNextLine/nextLine để nó giải quyết câu hỏi của OP. –

+0

Thực sự đơn giản và hoạt động! – tiboo

Các vấn đề liên quan