CodeGym /مدونة جافا /Random-AR /طريقة الماسح الضوئي nextLine () في Java
John Squirrels
مستوى
San Francisco

طريقة الماسح الضوئي nextLine () في Java

نشرت في المجموعة
الماسح الضوئي ، فئة في لغة برمجة جافا يمكنها تحليل الأنواع والسلاسل البدائية باستخدام التعبيرات العادية. تعمل طريقة الماسح الضوئي nextLine() في Java على نقل هذا الماسح الضوئي إلى ما بعد السطر الحالي وإرجاع الإدخال الذي تم تخطيه. المزيد عن nextLine() و Scanner لاحقًا في هذه المقالة.

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

بشكل تقريبي، تتيح لك فئة java.util.Scanner قراءة المدخلات من مصادر مختلفة، بما في ذلك وحدة التحكم. يبدو حقًا مشابهًا للماسح الضوئي الكلاسيكي. يتمتع هذا الجهاز ببنية معقدة، ولكن من السهل جدًا وصف عمله. يقوم الماسح الضوئي بقراءة التاريخ الذي يضعه المستخدم عليه، مثل الأوراق، ويحتفظ بالبيانات في الذاكرة مثل صورة أو ملف pdf. يقوم ماسح Java الضوئي، تمامًا مثل الماسح الضوئي الحقيقي، بقراءة البيانات من المصدر الذي تحدده له. على سبيل المثال، من سلسلة، من ملف، من وحدة التحكم. ثم يتعرف على هذه المعلومات ويعالجها حسب الحاجة. على سبيل المثال، يطلب البرنامج إدخال بعض البيانات من وحدة التحكم فيقرأها أو يريد قراءتها من ملف. لإجراء هذه العملية، يحتوي الماسح الضوئي على عدة طرق مدمجة مع كلمة "التالي". مثل next() و nextLine() و nextInt() و nextDouble() .

طريقة الخط التالي ().

كما قلنا أعلاه، يقوم كائن الماسح الضوئي بتقسيم الإدخال إلى رموز مميزة باستخدام نمط المحدد، والمسافات البيضاء افتراضيًا، ولكن يمكن استبداله بسلسلة ( java.lang.String ) أو تعبير عادي ( java.util.regex. نمط ). يمكن بعد ذلك تحويل الرموز المميزة الناتجة إلى قيم من أنواع مختلفة باستخدام الطرق التالية المختلفة. تعمل طريقة Scanner nextLine() في Java على دفع هذا الماسح الضوئي إلى ما بعد السطر الحالي وإرجاع الإدخال الذي تم تخطيه. يقوم الدالة General next() ‎ بالبحث عن الرمز المميز الكامل التالي من هذا الماسح الضوئي وإرجاعه. تستمر طريقة nextLine() في البحث عن المدخلات الخاصة بفاصل الأسطر، لذلك قد تقوم بتخزين جميع المدخلات بحثًا عن سطر لتخطيه في حالة عدم وجود فواصل أسطر. تطرح هذه الطريقة الاستثناءات التالية:
  • NoSuchElementException: يتم طرحه إذا لم يتم العثور على أي سطر
  • IllegalStateException: يتم طرحه إذا تم إغلاق هذا الماسح الضوئي

مثال الخط التالي ().

لنفترض أننا نريد من المستخدم إدخال أي كلمة أو عبارة في وحدة التحكم، ويمكننا أن نظهر له الكلمة أو العبارة التي أدخلها.
import java.util.Scanner;
//…scanner.nextLine() example
public class ScannerTest {
   public static void main(String[] args) {
       Scanner scan = new Scanner(System.in);
       System.out.println("Enter any phrase and I'll repeat it!... ");
      //here we are reading the next line:
       String sentence = scan.nextLine();
       System.out.println(sentence);
   }
}
يمكن أن يكون الإخراج على سبيل المثال ما يلي:
أدخل أي عبارة وسأكررها!... هذه هي عبارتي، هذه هي عبارتي
إذا كنت تستخدم طريقة next() بدلاً من nextLine() ، فستحصل على الكلمة الأولى فقط من الجملة.
أدخل أي عبارة وسأكررها!... هذه هي عبارتي هنا
لنأخذ مثالاً على طريقة عمل الماسح الضوئي nextLine() للقراءة من ملف. في هذا المثال، قمت بإنشاء ملف txt myTest.txt. هناك سطرين في هذا الملف:
ملف الاختبار الخاص بي والسطر التالي هنا
إليك برنامج يقرأ سطرين من ملف.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class ScannerTest {

   public static void main(String[] args) throws FileNotFoundException {
       Scanner scanner = new Scanner(new File("d://myTest.txt"));

       String textFromFile1 = scanner.nextLine();
       String textFromFile2 = scanner.nextLine();
       System.out.println(textFromFile1);
       System.out.println(textFromFile2);
       scanner.close();

   }
}
الإخراج هو:
ملف الاختبار الخاص بي والسطر التالي هنا
إذا كان المسار إلى الملف خاطئًا أو الملف الذي يحمل هذا الاسم غير موجود، فستحصل على الإخراج التالي:
استثناء في مؤشر الترابط "الرئيسي" java.io.FileNotFoundException: d:\myTest.txt في java.base/java.io.FileInputStream.open0(Native Method) في java.base/java.io.FileInputStream.open(FileInputStream.java :213) في java.base/java.io.FileInputStream.<init>(FileInputStream.java:155) في java.base/java.util.Scanner.<init>(Scanner.java:639) في ScannerTest.main( ScannerTest.java:8)
إذا عثر البرنامج على ملفك، لكنه فارغ، فستحصل على NoSuchElementException:
استثناء في مؤشر الترابط "الرئيسي" java.util.NoSuchElementException: لم يتم العثور على سطر في java.base/java.util.Scanner.nextLine(Scanner.java:1651) في ScannerTest.main(ScannerTest.java:10)
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION