Java الدالة close() الموجودة في الكلاس Scanner في جافا

تعريفها

تغلق الكائن Scanner, أي تمنع إدخال أي بيانات جديدة في البرنامج عن طريق كائن الـ Scanner.
من المهم جدا إغلاق كائن الـ Scanner عند الإنتهاء منه حتى تضمن عدم حدوث أي مشكلة في حال إستخدمت كلاس أو إنترفيس آخر في البرنامج يستخدم بدوره الكلاس Scanner.



بناؤها

public void close()
	


باراميترات

لا تقبل أي باراميتر.



قيمة الإرجاع

لا ترجع قيمة.



في المثال التالي سيطلب البرنامج من المستخدم إدخال عمره و وظيفته, بعدها سيقوم بعرض المعلومات التي قام بإدخلها.

المثال الأول

Main.java
import java.util.Scanner;                               // Scanner هنا قمنا باستدعاء الكلاس
 
public class Main {
 
    public static void main(String[] args) {
 
        Scanner input = new Scanner(System.in);         // input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
 
        String name;                                    // سنستخدم هذا المتغير لحفظ الإسم الذي سيدخله المستخدم
        String job;                                     // سنستخدم هذا المتغير لحفظ إسم الوظيفة الذي سيدخله المستخدم
 
        System.out.print("Enter your name: ");          // هنا طلبنا من المستخدم إدخال إسمه
        name = input.nextLine();                        // name هنا قمنا بإستقبال النص الذي سيدخله المستخدم و تخزينه في المتغير
 
        System.out.print("Enter your job: ");           // هنا طلبنا من المستخدم إدخال إسم الوظيفة
        job = input.nextLine();                         // job هنا قمنا بإستقبال النص الذي سيدخله المستخدم و تخزينه في المتغير
 
        // في الأخير سيتم عرض جميع المعلومات التي أدخلها المستخدم في لم يحدث أي خطأ أثناء إدخال البيانات
        System.out.println("\n----------- User Info ------------");
        System.out.println("Name: " +name);
        System.out.println("Job: " +job);
 
    }
 
}
		

سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.

Enter your name: Mhamad Harmush
Enter your job: Programmer

----------- User Info ------------
Name: Mhamad Harmush
Job: Programmer

المثال التالي هو نفس المثال السابق و لكننا قمنا بإغلاق كائن الـ Scanner بعد إدخال الإسم, الأمر الذي سيؤدي إلى حدوث خطأ منطقي أثناء تشغيل البرنامج لأنه سيجد أنك حاولت إدخال بيانات في حين أنك قمت بإغلاق كائن الـ Scanner الذي يسمح بإدخال البيانات.

المثال الثاني

Main.java
import java.util.Scanner;                               // Scanner هنا قمنا باستدعاء الكلاس
 
public class Main {
 
    public static void main(String[] args) {
 
        Scanner input = new Scanner(System.in);         // input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
 
        String name;                                    // سنستخدم هذا المتغير لحفظ الإسم الذي سيدخله المستخدم
        String job;                                     // سنستخدم هذا المتغير لحفظ إسم الوظيفة الذي سيدخله المستخدم
 
        System.out.print("Enter your name: ");          // هنا طلبنا من المستخدم إدخال إسمه
        name = input.nextLine();                        // name هنا قمنا بإستقبال النص الذي سيدخله المستخدم و تخزينه في المتغير
 
        input.close();                                  // Scanner هنا قمنا بإغلاق كائن الـ
 
        System.out.print("Enter your job: ");           // هنا طلبنا من المستخدم إدخال إسم الوظيفة
        job = input.nextLine();                         // job هنا قمنا بإستقبال النص الذي سيدخله المستخدم و تخزينه في المتغير
 
        // في الأخير سيتم عرض جميع المعلومات التي أدخلها المستخدم في لم يحدث أي خطأ أثناء إدخال البيانات
        System.out.println("\n----------- User Info ------------");
        System.out.println("Name: " +name);
        System.out.println("Job: " +job);
 
    }
 
}
		

سيتوقف البرنامج و يظهر الخطأ التالي عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.

Enter your name: Mhamad Harmush
Exception in thread "main" java.lang.IllegalStateException: Scanner closed
Enter your job:

الدورات

أدوات مساعدة

أقسام الموقع

دورات
مقالات كتب مشاريع أسئلة