القائمة الرئيسية

الصفحات

تعلم البرمجه تعلم لغه البرمجه Java الدرس الخامس 5

تعلم البرمجه من الصفر حتى الختراف


تعلم البرمجه  تعلم لغه البرمجه الجافا الدرس الخامس 5


Java
الكلاسات المتداخلة في جافا


مفهوم الـ Nested Classes
جافا تسمح لك بتعريف العدد الذي تريده من المتغيرات و الدوال بداخل الكلاس كما أنها تسمح لك بتعريف كلاس بداخل نفس الكلاس.
إذاً Nested Classes تعني كلاسات متداخلة, أي تعريف كلاس بداخل كلاس آخر.


هنا قمنا بتعريف كلاس إسمه A يحتوي على كلاس إسمه B.

المثال الأول
class A {

    class B {

    }

}


الكلاس مهما كان نوعه يمكنه أن يحتوي على متغيرات و دوال و كلاسات متداخلة.
هنا قمنا بتعريف كلاس إسمه A يحتوي على متغير إسمه x, دالة إسمها print(), و كلاس إسمه B.

المثال الثاني
class A {

    int x;

    public void print() {
        System.out.println("class A");
    }

    class B {

    }

}


يمكنك وضع العدد الذي تريده من الكلاسات المتداخلة بداخل بعض.
هنا قمنا بتعريف كلاس إسمه A يحتوي على إثنين كلاس و هما B و C.
C يحتوي أيضاً على كلاس إسمه D.

المثال الثالث
class A {

    class B {

    }

    class C {
        class D {
        }
    }

}
فوائد الـ Nested Classes
طريقة يمكن اتباعها لتصنيف الكلاسات ضمن مجموعات بشكل منطقي.
فمثلاً في حال كان الكلاس مصمم خصيصاً لكلاس آخر, فإنه من المنطق تعريف هذين الكلاسات مع بعضهما في نفس المجموعة.
من أجل تغليف البيانات Encapsulation بشكل أقوى. حيث أنه يمكنك تعريف الكلاس الداخلي كـ private و جعله فقط متاحاً أمام الكلاس الذي تم تعريفه بداخله.
لتسهيل معرفة الفائدة من الكلاس. فالـ Outer Class في العادة يتم إعطائه إسم يشير إلى الفائدة من أي كلاس موجود بداخله.
أنواع الـ Nested Classes
الـ Nested Classes ينقسمون إلى نوعين أساسيين و هما:

Static Nested Classes: و هي الكلاسات المتداخلة المعرفة كـ static.
Non Static Nested Classes: و هي الكلاسات المتداخلة الغير المعرفة كـ static.


الكلاسات المتداخلة في جافا



مصطلحات تقنية
الكلاس الذي يحتوي على كلاس أو أكثر يسمى Outer Class.
الكلاس الموجود بداخل كلاس آخر يسمى Nested Class إذا كان نوعه static.
الكلاس الموجود بداخل كلاس آخر و الغير معرف كـ static يسمى Inner Class.
    و لا يهم إن كان معرفاً كـ public, private, protected أو package private.


أمثلة
هنا قمنا بتطبيق مبدأ الـ Static Nested Classes.

المثال الأول
public class A {             // B بالنسبة للكلاسات Outer Class يعتبر A الكلاس

    static class B {         // static لأنه معرف كـ A بالنسبة للكلاس Nested Class يعتبر B الكلاس

    }

}

هنا قمنا بتطبيق مبدأ الـ Non Static Nested Classes.

المثال الثاني
public class A {             // F و D ,C ,B بالنسبة للكلاسات Outer Class يعتبر A الكلاس

    public class B {         // static لأنه غير معرف كـ A فقط بالنسبة للكلاس Inner Class يعتبر B الكلاس

    }

    private class C {        // static لأنه غير معرف كـ A فقط بالنسبة للكلاس Inner Class يعتبر C الكلاس

    }

    protected class D {      // static لأنه غير معرف كـ A فقط بالنسبة للكلاس Inner Class يعتبر D الكلاس

    }

    class E {                // static لأنه غير معرف كـ A فقط بالنسبة للكلاس Inner Class يعتبر E الكلاس

    }

}
التعامل مع الـ Static Nested Classes
Static Nested Class ( أو Nested Class ) عبارة عن كلاس يمكن الوصول له مباشرةً من الـ Outer Class دون حاجة إلى إنشاء كائن منه.
و يمكنه إحتواء متغيرات, دوال, و كلاسات أخرى أيضاً شرط أن تكون معرفة كـ static.
الأشياء المعرفة فيه كـ static, يمكن الوصول لها مباشرةً منه.
بينما الأشياء الغير المعرفة فيه كـ static, يمكن الوصول لها فقط من خلال إنشاء كائن منه.


مثال
A.java
package nestedclasses;

public class A {                    // A إسمه Outer Class هنا قمنا بتعريف

    static class B {                // B إسمه Nested Class هنا قمنا بتعريف

        public int x;               // static لأنه غير معرف كـ B هذا المتغير يمكن الوصول له فقط من خلال كائن من الكلاس
        public static int y;        // static لأنه معرف كـ A.B.y هذا المتغير يمكن الوصول له مباشرةً هكذا
     
        public void printX() {                // static لأنها غير معرفة كـ B هذه الدالة يمكن الوصول لها فقط من خلال كائن من الكلاس
            System.out.println("x contain: " + x);
        }
     
        public static void printY() {         // static لأنها معرفة كـ A.B.printY() هذه الدالة يمكن الوصول لها مباشرةً هكذا
            System.out.println("y contain: " + y);
        }

    }

}

Test.java
package nestedclasses;

public class Test {

    public static void main(String[] args) {

        A.B obj = new A.B();     // obj إسمه A الموجود بداخل الكلاس B هنا قمنا بإنشاء كائن من الكلاس

        obj.x = 10;              // obj الموجود في الكائن x هنا قمنا بإعطاء قيمة للمتغير
        obj.printX();            // obj من خلال الكائن printX() هنا قمنا باستدعاء الدالة

        obj.y = 20;              // لا تستخدم هذا الأسلوب  <---  obj من خلال الكائن y هنا قمنا بإعطاء قيمة للمتغير
        obj.printY();            // لا تستخدم هذا الأسلوب  <---  obj من خلال الكائن printY() هنا قمنا باستدعاء الدالة

        A.B.y = 30;              // B بشكل مباشر من الكلاس y هنا قمنا بإعطاء قيمة للمتغير
        A.B.printY();            // B بشكل مباشر من الكلاس printY() هنا قمنا باستدعاء الدالة

    }
}

•سنحصل على النتيجة التالية عند التشغيل.

x contain: 10
y contain: 20
y contain: 30


إذا أردت الوصول لمحتويات كلاس نوعه static يفضل الوصول لهم من الكلاس مباشرةً و ليس من خلال كائن من الكلاس الذي يحتويهم.
إذا عدنا للكود السابق, في الكلاس Test, في السطرين 12 و 13 تحديدياً, ننصحك بالتالي:

إعتماد A.B.y بدل obj.y
إعتماد A.B.printY() بدل obj.printY()
يفضل إتباع هذه النصائح دائماً لجعل برامجك أفضل من ناحية الأداء و السرعة.


كان بإمكانك أيضاً إنشاء الكائن obj بطريقة أخرى.

شاهد المثال »

التعامل مع الـ Non Static Nested Classes
Non Static Nested Class ( أو Inner Class ) عبارة عن كلاس يمكن الوصول له و لمحتوياته فقط من خلال كائن.
و يمكنه إحتواء متغيرات, دوال, و كلاسات أخرى أيضاً.
لا يمكن تعريف أي شيء فيه كـ static لأنه لا يمكن الوصول له إلا من خلال كائن.


أنواع الـ Inner Classes
الـ Inner Classes ينقسمون إلى ثلاث أنواع أساسية على حسب طريقة تعريفك لهم:

Inner Classes.
Method Local Inner Classes.
Anonymous Inner Classes.
التعامل مع الـ Inner Classes
الـ Inner Class عبارة عن كلاس معرف بداخل كلاس.
الـ Inner Class يمكن أن يكون معرف كـ ( public أو private أو protected أو package private ).
الـ Modifier الذي تستخدمه عند تعريف الكلاس يحدد الطرق التي يمكنك من خلالها الوصول لهذا الكلاس.


مثال
•لنفترض أنه عندنا OuterClass إسمه a بداخله InnerClass إسمه B

class A {         // OuterClass

    class B {     // InnerClass

    }

}

•هكذا ننشئ كائن من الكلاس B

A a   = new A();       // OuterClass أولاً: ننشئ كائن من الـ
A.B b = a.new B();     // InnerClass ثانياً: ننشئ كائن من الـ
•و يمكنك إنشاء كائن من الكلاس B بأمر واحد.

A.B b = new A().new B();

أمثلة شاملة

هنا قمنا بتعريف الـ Inner Class كـ public.

شاهد المثال »


هنا قمنا بتعريف الـ Inner Class كـ private.

شاهد المثال »

التعامل مع الـ Method Local Inner Classes
في جافا, يمكنك تعريف كلاس جديد بداخل دالة, و عندها يعتبر هذا الكلاس local Class فيها. بمعنى أنه يمكن الوصول له فقط من خلالها, حيث أنه يمكن إنشاء كائن من هذا الكلاس بداخلها فقط.


في المثال التالي قمنا بتعريف Outer Class إسمه a, يحتوي على دالة إسمها displayInnerClass().
الدالة displayInnerClass() تحتوي على كلاس إسمه B, و الذي بدوره يحتوي على دالة إسمها print().
بعد تعريف الكلاس B قمنا بإنشاء كائن منه لإستدعاء الدالة print() في داخل الدالة displayInnerClass().

إذاً الفكرة هنا هي تعريف كلاس و إنشاء كائن منه بداخل دالة.

مثال
A.java
package localinnerclasses;

public class A {                            // A إسمه Outer Class هنا قمنا بتعريف

    // هنا قمنا بتعريف دالة تنشئ كلاس يحتوي على دالة أيضاً. ثم تنشئ كائن من الكلاس و تستدعي الدالة الموجودة فيه
    public void displayInnerClass() {

        class B {                           // B هنا قمنا بتعريف كلاس إسمه
            void print() {                  // print() يحتوي على الدالة B
                System.out.println("B is a Local Inner Class");
            }
        }

        B b = new B();                      // B هنا قمنا بإنشاء كائن من الكلاس
        b.print();                          // B الموجودة في الكلاس print() هنا قمنا باستدعاء الدالة
    }

}

Test.java
package localinnerclasses;

public class Test {

    public static void main(String[] args) {

        // منه displayInnerClass() ثم قمنا باستدعاء الدالة A هنا قمنا بإنشاء كائن من الكلاس
        A a = new A();
        a.displayInnerClass();

    }
}

•سنحصل على النتيجة التالية عند التشغيل.

B is a Local Inner Class
التعامل مع الـ Anonymous Inner Classes
الـ Anonymous Inner Class يعتبر من أهم الأساليب التي تستخدم في خلق الكائنات و التي ستحتاجها كثيراً عند بناء برامجك الخاصة.

يستخدم هذا الأسلوب في العادة عند الحاجة إلى إستدعاء دالة واحدة من Interface أو Abstract Class حتى لا نضطر إلى أن نفعل extends أو implements لكل كلاس أو إنترفيس نحتاجه.
هذا الأسلوب مهم لناحية الأداء و السرعة و تصغير حجم الكود.

إذاً بشكل عام, فكرة الـ Anonymous Inner Class تعريف كلاس و خلق كائن منه و عمل Override لدالة معينة بداخله.


طريقة تعريف Anonymous Class
في البداية عليك أن تفعل import للكلاس أو الإنترفيس الذي تنوي إنشاء كائن منه في حال كنت تستخدم كلاس جاهز من الكلاسات الموجودة في جافا.
لتعريف Anonymous Class, عليك إنشاء كائن من كلاس معين, ثم فتح أقواس البداية و النهاية بعد الكونستركتور, و تعريف الـ Anonymous Class بداخله.


أمثلة شاملة
هنا وضعنا أمثلة مهمة تعلمك طريقة التعامل و الإستفادة من الـ Anonymous Class.

شاهد الأمثلة »


هنا وضعنا مثال طبقنا فيه مفهوم الـ Anonymous Class و مثال طبقنا فيه مفهوم الـ Anonymous Object.


Java
إدخال البيانات في جافا


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

الكلاس Scanner هو كلاس جاهز في جافا, يستخدم بشكل عام لجعل البرنامج يستقبل بيانات من المستخدم بالإضافة إلى إمكانية تحويل نوع هذه البيانات و التعديل عليها. و هو كبير جداُ حيث أنه يتألف من 9 كونستركتورات و أكثر من 50 دالة.


أنواع البيانات التي يمكن إستقبالها باستخدام الكلاس Scanner
أعداد صحيحة, أي أعداد لا تقبل الفاصلة, مثال: 123.
أعداد تقبل الفاصلة العشرية, مثال: 10.55 .
حرف واحد ( سواء حرف, رقم, رمز ), مثال: a أو 3 أو @.
كلمة واحدة, مثل harmash
سطر كامل ( أي أكثر من كلمة ), مثال: harmash.com is amazing site to learn programming
صح أو خطأ, أي إجبار المستخدم على إدخال كلمة واحدة و هي إما true و إما false.

إذاً كل نوع بيانات تريد إستقباله في البرنامج له دالة خاصة ستتعرف عليها لاحقاً.


مصطلحات تقنية
Delimiter تعني الـ Pattern المستخدمة في تحديد شكل المسافات الفارغة White Spaces.
سترى لاحقاً أنه بإمكانك جعل مترجم جافا يعتبر حرف أو كلمة أو جملة ما تبدو و كأنها مسافة فارغة White Space.
Console Application تعني البرنامج الذي يعمل بدون واجهة مستخدم ( أي بدون GUI).
إذاً جميع البرامج التي فعلناها في الدروس السابقة تسمى Console Application. لأن النتيجة التي كنا نراها عند تشغيل البرنامج, كانت تظهر في ما يسمى Console.
طريقة جعل البرنامج يستقبل بيانات من المستخدم
في لغة جافا لكي تجعل البرنامج يستقبل معلومات من المستخدم عليك إتباع ثلاث خطوات أساسية:

إستدعاء الكلاس Scanner الذي يحتوي على دوال إدخال المعلومات من المستخدمين.
إنشاء كائن من هذا الكلاس لأنك لا تستطيع إستخدام دوال الكلاس Scanner إلا من خلال الكائن الذي يشير إليه.
إستدعاء إحدى دوال إدخال المعلومات من هذا الكائن.


إذاً ستحتاج إلى الأوامر التالية في كل برنامج ( يعتبر Console Application ) تطلب فيه من المستخدم إدخال بيانات من لوحة المفاتيح.

مثال
إستدعاء الكلاس Scanner حتى نستطيع إنشاء كائن منه.
import java.util.Scanner;

إنشاء كائن من الكلاس Scanner, هنا قمنا بتسميته input
Scanner input = new Scanner(System.in);

إستدعاء إحدى دوال إدخال البيانات من خلال كائن الـ Scanner الذي يفترض أنك قمت بإنشائه سابقاً.
هنا قمنا بإستدعاء الدالة nextInt() من هذا الكائن و التي تعني أنه عند تشغيل البرنامج و عندما يأتي لتنفيذ هذا الكود, سيقوم بإنتظار المستخدم لإدخال عدد صحيح من لوحة المفاتيح, بعدها سيتم تخزين ما أدخله المستخدم في المتغير a
int a = input.nextInt();

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



أمثلة شاملة حول إدخال بيانات من المستخدم

المثال الأول
هنا قمنا بإنشاء برنامج يطلب من المستخدم إدخال إسمه و عمره و مهنته.

شاهد المثال »



المثال الثاني
هنا قمنا بإنشاء برنامج يطلب من المستخدم إدخال علاماته المدرسية و يخزنها في مصفوفة.

شاهد المثال »



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

شاهد المثال »

كونستركتورات الكلاس Scanner
الجدول التالي يحتوي على جميع الـ constructors الموجودين في الكلاس Scanner.

الكونستركتور مع تعريفه
1
Scanner(File Source)
يستخدم هذا الكونستركتور لقراءة البيانات من ملف معين.
2
Scanner(File Source, String charsetName)
يستخدم هذا الكونستركتور لقراءة البيانات من ملف معين, مع تحديد الترميز المستخدم عند قراءتهم.
3
Scanner(InputStream source)
يستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه InputStream.
4
Scanner(InputStream source, String charsetName)
يستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه InputStream مع تحديد الترميز المستخدم عند قراءتهم.
5
Scanner(Path source)
يستخدم هذا الكونستركتور لقراءة البيانات من الملف الذي يشير له كائن الـ Path.
6
Scanner(Path source, String charsetName)
يستخدم هذا الكونستركتور لقراءة البيانات من الملف الذي يشير له كائن الـ Path مع تحديد الترميز المستخدم عند قراءتهم.
7
Scanner(Readable Source)
يستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه Readable.
8
Scanner(ReadableByteChannel source)
يستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه ReadableByteChannel.
9
Scanner(ReadableByteChannel source, String charsetName)
يستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه ReadableByteChannel مع تحديد الترميز المستخدم عند قراءتهم.

لاحقاً سنستخدم ثابت جاهز في جافا إسمه System.in لقراءة البيانات التي يدخلها المستخدم من لوحة المفاتيح (Keyboard).
الـ System.in عبارة عن InputStream يستخدم لجعل البرنامج يستقبل بيانات المستخدم من لوحة المفاتيح وقت التشغيل.

دوال الكلاس Scanner
ملاحظة: في أغلب الأمثلة الموضوعة في الجدول التالي سنستخدم كونستركتور الكلاس Scanner الذي يأخذ String كـ Argument حتى ندخل بيانات مباشرةً في كائن الـ Scanner بدل إدخالها بواسطة دوال الإدخال. و النتيجة هي نفسها.
كما أننا لن نقوم باستخدام الجمل ( try, catch, finally ) حتى يكون التركيز فقط على الدوال التي نريدك أن تركز عليها.

عند التعامل مع الكلاس Scanner, كل دالة تبدأ بكلمة next تعتبر دالة من دوال الإدخال.
أمثلة: next() - nextLine() - nextInt() - nextFloat() إلخ..


الجدول التالي يحتوي على دوال الإدخال الموجودة في الكلاس Scanner.

الدالة مع تعريفها
1
String next()
ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner.
و تستخدم ايضاً لإستقبال كلمة واحدة من المستخدم.
تابع القراءة »
2
String next(Pattern pattern)
ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت تتطابق مع كائن الـ Pattern الذي نمرره لها كـ Argument.
و تستخدم ايضاً لإستقبال كلمة واحدة من المستخدم.
تابع القراءة »
3
String next(String pattern)
ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت تتطابق مع الـ String الذي نمرره لها كـ Argument و الذي يمثل Pattern.
و تستخدم ايضاً لإستقبال كلمة واحدة من المستخدم.
تابع القراءة »
4
String nextLine()
ترجع السطر التالي الذي تم إدخاله في كائن الـ Scanner.
و تستخدم ايضاً لإستقبال سطر كامل من المعلومات من المستخدم.
تابع القراءة »
5
boolean nextBoolean()
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع boolean, أي في حال كانت هذه القيمة true أو false ستقوم بإرجاعها.
و تستخدم ايضاً لإستقبال قيمة نوعها boolean من المستخدم.
تابع القراءة »
6
byte nextByte()
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع byte.
و تستخدم ايضاً لإستقبال قيمة نوعها byte من المستخدم.
تابع القراءة »
7
byte nextByte(int radix)
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع byte و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
و تستخدم ايضاً لإستقبال قيمة نوعها byte من المستخدم.
تابع القراءة »
8
double nextDouble()
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع double
و تستخدم ايضاً لإستقبال قيمة نوعها double من المستخدم.
تابع القراءة »
9
float nextFloat()
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع float
و تستخدم ايضاً لإستقبال قيمة نوعها float من المستخدم.
تابع القراءة »
10
int nextInt()
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع int
و تستخدم ايضاً لإستقبال قيمة نوعها int من المستخدم.
تابع القراءة »
11
int nextInt(int radix)
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع int و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
و تستخدم ايضاً لإستقبال قيمة نوعها int من المستخدم.
تابع القراءة »
12
long nextLong()
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع long
و تستخدم ايضاً لإستقبال قيمة نوعها long من المستخدم.
تابع القراءة »
13
long nextLong(int radix)
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع long و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
و تستخدم ايضاً لإستقبال قيمة نوعها long من المستخدم.
تابع القراءة »
14
short nextShort()
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع short.
و تستخدم ايضاً لإستقبال قيمة نوعها short من المستخدم.
تابع القراءة »
15
short nextShort(int radix)
ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع short و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
و تستخدم ايضاً لإستقبال قيمة نوعها short من المستخدم.
تابع القراءة »


الجدول التالي يحتوي على دوال البحث الموجودة في الكلاس Scanner.

الدالة مع تعريفها
1
String findInLine(Pattern pattern)
تبحث في الـ Scanner الذي قام باستدعائها عن أول مكان يتطابق مع الـ Pattern التي نمررها لها كـ Argument و ترجعه.
تابع القراءة »
2
String findInLine(String pattern)
تبحث في الـ Scanner الذي قام باستدعائها عن أول مكان يتطابق مع الـ String (التي تمثل Pattern) التي نمررها لها كـ Argument و ترجعه.
تابع القراءة »
3
String findWithinHorizon(Pattern pattern, int horizon)
تبحث في الـ Scanner الذي قام باستدعائها عن أول مكان يتطابق مع الـ Pattern, و تتوقف في البحث قبل الـ index الذي نضعه في الباراميتر الثاني.
تابع القراءة »
4
String findWithinHorizon(String pattern, int horizon)
تبحث في الـ Scanner الذي قام باستدعائها عن أول مكان يتطابق مع الـ String (الذي يمثل Pattern), و تتوقف في البحث قبل الـ index الذي نضعه في الباراميتر الثاني.
تابع القراءة »
5
MatchResult match()
ترجع كائن نوعه MatchResult يمثل نتيجة آخر عملية بحث تم إجرائها على كائن الـ Scanner مع شرح مفصل.
و ترجع null في حال عدم حدوث أي إستثناء بسبب كائن الـ Scanner.
تابع القراءة »


الجدول التالي يحتوي على دوال التشييك الموجودة في الكلاس Scanner.

الدالة مع تعريفها
1
boolean hasNext()
ترجع true في حال كان يوجد كلمة تالية في كائن الـ Scanner.
تابع القراءة »
2
boolean hasNext(Pattern pattern)
ترجع true في حال كان يوجد نص تالي في كائن الـ Scanner قيمته تساوي قيمة نص الـ Pattern التي نضعها لها كـ Argument.
تابع القراءة »
3
boolean hasNext(String pattern)
ترجع true في حال كان يوجد نص تالي في كائن الـ Scanner قيمته تساوي قيمة نص الـ Pattern التي نضعها لها كـ Argument.
تابع القراءة »
4
boolean hasNextInt()
ترجع true في حال كان يوجد قيمة تالية في كائن الـ Scanner يمكن التعامل معها كـ int.
تابع القراءة »
5
boolean hasNextInt(int radix)
ترجع true في حال كان يوجد قيمة تالية في كائن الـ Scanner يمكن التعامل معها كـ int و تتطابق مع الـ radix الذي نمرره لها كـ Argument.
تابع القراءة »
6
boolean hasNextLine()
ترجع true في حال كان يوجد سطر تالي في كائن الـ Scanner.
تابع القراءة »


الجدول التالي يحتوي على دوال المعالجة الموجودة في الكلاس Scanner.

الدالة مع تعريفها
1
void close()
تغلق الـ Scanner, أي تمنع إدخال أي بيانات جديدة في البرنامج عن طريق كائن الـ Scanner.
تابع القراءة »
2
Pattern delimiter()
ترجع الـ Pattern الذي يستخدمه كائن الـ Scanner في تحديد شكل المسافات الفارغة.
تابع القراءة »
3
Locale locale()
ترجع كائن نوعه Locale يمثل نوع الترميز الذي يستخدمه كائن الـ Scanner عند قراءة و تخزين البيانات.
تابع القراءة »
4
int radix()
ترجع الـ radix الإفتراضية لكائن الـ Scanner.
تابع القراءة »
5
Scanner reset()
ترجع الخصائص الإفتراضية لكائن الـ Scanner.
تابع القراءة »
6
Scanner skip(Pattern pattern)
تتخطى النص التالي في كائن الـ Scanner في حال كان يتطابق مع كائن الـ Pattern مع تجاهل الـ delimiters.
تابع القراءة »
7
Scanner skip(String pattern)
تتخطى النص التالي في كائن الـ Scanner في حال كان يتطابق مع الـ String الذي نمرره لها كـ Argument و الذي يمثل Pattern مع تجاهل الـ delimiters.
تابع القراءة »
8
String toString()
ترجع String تمثل كافة معلومات كائن الـ Scanner.
تابع القراءة »
9
Scanner useDelimiter(Pattern pattern)
تستخدم لجعل حرف أو كلمة أو جملة تبدو كمسافة فارغة في كائن الـ Scanner.
تابع القراءة »
10
Scanner useDelimiter(String pattern)
تستخدم لجعل حرف أو كلمة أو جملة تبدو كمسافة فارغة في كائن الـ Scanner.
تابع القراءة »
11
Scanner useLocale(Locale locale)
تستخدم لتحديد الترميز الذي سيستخدمه كائن الـ Scanner عند قراءة و تخزين البيانات.
تابع القراءة »
12
Scanner useRadix(int radix)
تستخدم لتحديد الـ radix الذي سيستخدمه كائن الـ Scanner عند قراءة و تخزين أي رقم.
تابع القراءة »






تعليقات