كيفية الحصول على رقم السطر باستخدام الماسح الضوئي

StackOverflow https://stackoverflow.com/questions/1332297

  •  19-09-2019
  •  | 
  •  

سؤال

أنا أستخدم الماسح الضوئي لقراءة خط ملف نصي حسب الخط ولكن بعد ذلك كيفية الحصول على رقم السطر منذ تكرار الماسح الضوئي من خلال كل إدخال؟ برنامجي شيء مثل هذا:

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. كيف أحصل على ذلك؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام 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