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

الصفحات

مفهوم ال enum وادخال البيانات في جافا

مفهوم النوع enum في جافا

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

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

بشكل عام, في حال أردت تعريف مجموعة قيم مترابطة يستحيل أن تتبدل فالخيار الأمثل هو تعريف هذه القيم في الأساس بداخل enum.

أمثلة حول بعض المعلومات الثابتة في الحياة و التي أيضاً تعتبر ثابتة في المنطق هي:

  • فصول السنة ( الخريف, الشتاء, الربيع, الصيف )

  • الإتجاهات ( الشمال - الجنوب - الشرق - الغرب )

  • أيام الأسبوع ( الإثنين - الثلاثاء - الأربعاء إلخ.. )

  • أشهر السنة ( كانون الثاني - شباط - آذار إلخ.. )

  • الجنس ( ذكر - أنثى )

عند التعامل مع هذا النوع الثابت من البيانات و الذي لا نريد لأحد أن يعبث به فإننا نستخدم النوع enum و هذا ما سنراه لاحقاً في الأمثلة.


مصطلحات تقنية

الـ enum يقال له تعداد في اللغة العربية حيث نضع فيه مجموعة عناصر.

التعامل مع النوع enum في جافا

التعامل مع الـ enum يشبه كثيراً التعامل مع الكلاس المعرف كـ final static حيث لا يمكن إنشاء كائنات منه و يمكن الوصول بشكل مباشر للثوابت الموضوعة فيه.


نقاط مهمة حول النوع enum

  • يزيد أمان أنواع البيانات التي سيتم التعامل معها.

  • يمكن إستخدامه في الجملة switch.

  • يمكن تعريفه ضمن ملف خاص مثل الكلاس و يمكن تعريفه ضمن كلاس.

  • كل ثابت فيه, عبارة عن كائن من نفس نوعه و يعتبر نوعه public final static.

  • يمكنه أن يحتوي على متغيرات, دوال, كونستركتورات.

  • لا يمكن إنشاء كائنات منه و لا داعي لذلك أصلاً لأنه يمكن الوصول لثوابته بشكل مباشر.

  • عند تعريف كونستركتور فيه فإنه يجب تعريفه كـ private لأنه لا يمكن إنشاء كائنات منه و هذا أمر منطقي.

  • يمكنه أن يفعل implements لإنترفيس أو أكثر.

  • لا يمكنه أن يرث من أي كلاس لأنه في الواقع يرث من كلاس إسمه Enum.

  • يمكنك إستدعاء الدالة values() من أي enum للحصول على مصفوفة من نفس نوعه و فيها نسخة من كل قيمه.



معلومة تقنية

كل ثابت تضعه في الـ enum يتم إعطاؤه رقم Index ابتداءاً من الرقم 0 يشير لموقعه فيه مثل المصفوفة.
فمثلاً العنصر الأول يعطى Index رقم 0 و العنصر الثاني يعطى Index رقم 1 و هكذا.

يمكنك معرفة رقم الـ Index المعطى لأي ثابت في الـ enum بواسطة الدالة ordinal() و لكنك على الأغلب لن تحتاج إلى ذلك.

أمثلة شاملة حول النوع enum في جافا


المثال الأول

ستتعلم من المثال التالي كيف تقوم بتعريف enum بداخل كلاس بالإضافة إلى معرفة كيف يمكن الوصول للثوابت الموجودة فيه و معرفة Index الثابت.



في المثال التالي قمنا بتعريف كلاس عادي و بداخله قمنا بتعريف enum يمثل أيام الأسبوع إسمه Days.
في الدالة main() قمنا بعرض قيمة أول ثابت موجود في الـ enum بالإضافة إلى رقم الـ Index الخاص فيه.

مثال

Main.java
	  public class Main {

	  // وضعنا فيه 7 ثوابت Days إسمه enum هنا قمنا بتعريف
	  enum Days {
	  MONDAY,
	  TUESDAY,
	  WEDNESDAY,
	  THURSDAY,
	  FRIDAY,
	  SATURDAY,
	  SUNDAY
	  }

	  public static void main(String[] args) {

	  // Days الموجود في التعداد MONDAY هنا قمنا بطباعة إسم الثابت
	  System.out.println(Days.MONDAY);

	  // Days بالنسبة للتعداد MONDAY الثابت index هنا قمنا بطباعة رقم
	  System.out.println(Days.MONDAY.ordinal());

	  }

	  }
	

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

MONDAY
0

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

ستتعلم من المثال التالي كيف تقوم بعرض جميع الثوابت الموجودة في الـ enum بالإعتماد على الدالة values() و الحلقة for each.



في المثال التالي قمنا بتعريف enum يمثل أيام الأسبوع إسمه Days.
في الدالة main() قمنا باستخدام الدالة values() و التي ترجع مصفوفة فيها جميع عناصر التعداد Days. عناصر هذه المصفوفة قمنا بعرضها مباشرة باستخدام حلقة For Each.

مثال

Main.java
	  public class Main {

	  // وضعنا فيه 7 ثوابت Days إسمه enum هنا قمنا بتعريف
	  enum Days {
	  MONDAY,
	  TUESDAY,
	  WEDNESDAY,
	  THURSDAY,
	  FRIDAY,
	  SATURDAY,
	  SUNDAY
	  }

	  public static void main(String[] args) {

	  // و ستعرض كل عنصر فيها values() هذه الحلقة ستقوم بالمرور على جميع العناصر التي سترجعها الدالة
	  for(Days d: Days.values())
	  {
	  System.out.println(d);
	  }

	  }

	  }
	

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

MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY
SUNDAY

المثال الثالث

ستتعلم من المثال التالي كيف تقوم بتخزين ثابت موجود في enum بداخل كائن من نفس نوعه.



في المثال التالي قمنا بتعريف enum يمثل أيام الأسبوع إسمه Days.
في الدالة main() قمنا بتعريف كائن نوعه Days و إسمه day وضعنا فيه نسخة من رابع ثابت موجود في الـ Days.

مثال

Main.java
	  public class Main {

	  // وضعنا فيه 7 ثوابت Days إسمه enum هنا قمنا بتعريف
	  enum Days {
	  MONDAY,
	  TUESDAY,
	  WEDNESDAY,
	  THURSDAY,
	  FRIDAY,
	  SATURDAY,
	  SUNDAY
	  }

	  public static void main(String[] args) {

	  // THURSDAY قيمته تساوي قيمة الثابت Days و نوعه day هنا قمنا بتعريف كائن إسمه
	  Days day = Days.THURSDAY;

	  System.out.println(day);

	  }

	  }
	

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

THURSDAY

المثال الرابع

ستتعلم من المثال التالي كيف تقوم بتحديد قيمة كل ثابت في الـ enum.



في المثال التالي قمنا بتعريف enum إسمه Size, وضعنا فيه 4 ثوابت مع وضع قيمة عددية لكل ثابت.
في الدالة main() قمنا بعرض كل ثابت و بجانبه القيمة التي يمثلها.

مثال

Main.java
	  public class Main {

	  // وضعنا فيه 4 ثوابت مع تحديد قيمهم Size إسمه enum هنا قمنا بتعريف
	  enum Size {

	  // هنا قمنا بتعريف أسماء الثوابت و تحديد قيمهم
	  SMALL(100),
	  MEDIUM(150),
	  LARGE(200),
	  XLARGE(250);

	  // هنا قمنا بتعريف المتغير الذي سيتم إستخدامه بشكل تلقائي لتخزين قيمة كل ثابت تم تعريفه
	  private int value;

	  // هنا قمنا بتعريف الكونستركتور الذي سيقوم بربط إسم كل ثابت بالقيمة التي تم وضعها بجانبه
	  private Size(int value){
	  this.value = value;
	  }

	  }

	  public static void main(String[] args) {

	  // و ستعرض إسم و قيمة كل عنصر فيها values() هذه الحلقة ستقوم بالمرور على جميع العناصر التي سترجعها الدالة
	  for(Size s: Size.values())
	  {
	  System.out.println(s + " " + s.value);
	  }

	  }

	  }
	

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

SMALL 100
MEDIUM 150
LARGE 200
XLARGE 250

المثال الخامس

ستتعلم من المثال التالي كيف تضع أكثر من قيمة لكل ثابت في الـ enum.



في المثال التالي قمنا بتعريف enum إسمه Size, وضعنا فيه 4 ثوابت مع وضع قيمة عددية و قيمة نصية لكل ثابت إسم.
في الدالة main() قمنا بعرض القيمة النصية و القيمة العددية لكل ثابت.

مثال

Main.java
	  public class Main {

	  // وضعنا فيه 4 ثوابت مع تحديد قيمهم Size إسمه enum هنا قمنا بتعريف
	  enum Size {

	  // هنا قمنا بتعريف الثوابت مع إعطاء كل واحد منهم رقم يمثل قيمة الثابت و نص يمثل إسم الثابت
	  SMALL(100, "small"),
	  MEDIUM(150, "meduim"),
	  LARGE(200, "large"),
	  XLARGE(250, "x-large");

	  // هنا قمنا بتعريف المتغيرين اللذي سيتم إستخدامهما بشكل تلقائي لتخزين إسم و قيمة كل ثابت تم تعريفه
	  private int value;
	  private String name;

	  // هنا قمنا بتعريف الكونستركتور الذي سيقوم بربط كل ثابت بالإسم و القيمة التي تم وضعها بجانبه
	  private Size(int value, String name){
	  this.value = value;
	  this.name = name;
	  }

	  }

	  public static void main(String[] args) {

	  // لكل عنصر فيها value و الـ name و ستعرض قيمة الـ values() هذه الحلقة ستقوم بالمرور على جميع العناصر التي سترجعها الدالة
	  for(Size s: Size.values())
	  {
	  System.out.println(s.name + " " + s.value);
	  }
	  }

	  }
	

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

small 100
meduim 150
large 200
x-large 250

المثال السادس

ستتعلم من المثال التالي كيف تعرف قيمة الثابت الذي إختاره المستخدم من الـ enum بواسطة الجملة switch.



في المثال التالي قمنا بتعريف enum يمثل أيام الأسبوع إسمه Days.
في الدالة main() قمنا بتعريف كائن نوعه Days و إسمه userSelectedDay وضعنا فيه نسخة من رابع ثابت موجود في الـ Days و اعتبرنا أن المستخدم هو من قام باختيار قيمة هذا الثابت. بعدها قمنا بمقارنة الثابت userSelectedDay مع جميع الثوابت الموجودة في التعداد Days بواسطة الجملة switch.

مثال

Main.java
	  public class Main {

	  // وضعنا فيه 7 ثوابت Days إسمه enum هنا قمنا بتعريف
	  enum Days {
	  MONDAY,
	  TUESDAY,
	  WEDNESDAY,
	  THURSDAY,
	  FRIDAY,
	  SATURDAY,
	  SUNDAY
	  }

	  public static void main(String[] args) {

	  // THURSDAY قيمته تساوي قيمة الثابت Days و نوعه userSelectedDay هنا قمنا بتعريف كائن إسمه
	  Days userSelectedDay = Days.THURSDAY;

	  // userSelectedDay هنا قمنا باختبار نوع الثابت
	  switch (userSelectedDay)
	  {
	  // سيتم تنفيذ أمر الطباعة التالي THURSDAY أو WEDNESDAY أو TUESDAY أو MONDAY إذا كان يمثل نسخة من الثابت
	  case MONDAY:
	  case TUESDAY:
	  case WEDNESDAY:
	  case THURSDAY:
	  System.out.println("We are available from 8:00 AM to 4:00 PM.");
	  break;

	  // سيتم تنفيذ أمر الطباعة التالي FRIDAY إذا كان يمثل نسخة من الثابت
	  case FRIDAY:
	  System.out.println("We are available from 8:00 AM to 12:00 PM.");
	  break;

	  // إذا كان لا يمثل نسخة من الثوابت المذكورة سابقاً سيتم تنفيذ أمر الطباعة التالي
	  default:
	  System.out.println("We are not available on vacations.");
	  }

	  }

	  }
	

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

We are available from 8:00 AM to 4:00 PM.

المثال السابع

ستتعلم من المثال التالي كيف تقوم بتعريف enum في ملف خاص بطريقتين.
فعلياً, ستتعلم كيف تستطيع إنشاء كلاس عادي و من ثم تحويله لـ enum. و ستتعلم كيف تستطيع إنشاء enum مباشرةً في برنامج NetBeans.



أسهل طريقة لتعريف enum في ملف خاص

في البداية, تذكر أنه يمكنك تعريف enum بداخل كلاس أو في ملف خارجي كما سبق و شرحنا في الدرس.

الآن لتعريف enum في ملف خاص, يمكنك إنشاء كلاس جافا عادي, و من ثم قم فقط بتبديل كلمة class بكلمة enum.


مثال

هنا قمنا بإنشاء كلاس إسمه Days.

	public class Days {
	// class عبارة عن Days هنا
	}
  

بعد إنشاء الكلاس, قم بتبديل كلمة class بكلمة enum فقط كالتالي.

	public enum Days {
	// enum عبارة عن Days هنا
	}
  

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

ستتعلم من المثال التالي أهمية الـ enum في حماية الكود خاصةً إذا كنت تعمل ضمن فريق و تريد أن يلتزم زملاؤك بالأنواع التي يمكن إستخدامها.

شاهد المثال »

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


الآن لنفترض أننا أردنا بناء لعبة يستطيع اللاعب أن يلعبها بثلاث مستويات كالتالي:

  • مستوى سهل ( Easy).

  • مستوى متوسط ( Normal).

  • مستوى صعب ( Hard).

الآن لكتابة كود هذه اللعبة و الذي قد يتألف من آلاف الأسطر البرمجية و التي ستكون موزعة على عدة ملفات جافا بدون القلق من مسألة كيف سيعرف كل مبرمج في الفريق كيف سيتم تحديد مستوى الصعوبة في اللعبة و لضمان أن تعرفوا جميعكم المستويات المتوفرة فيها و لتعلموا بنفس المنطق, فإنه من الأفضل أن يتم تعريف enum واحد إسمه Level و بداخله ثلاث ثوابت إسمها EASY و NORMAL و HARD.
و عندها سيقوم كل مبرمج بكتابة الكود بناءاً على قيمة هذه الثوابت كما فعلنا في المثال التالي.

مثال

هذا الملف مسؤول عنه مبرمج واحد و هو لتحديد المستويات المتوفرة في اللعبة.

Level.java
	  // وضعنا فيه 3 ثوابت Level إسمه enum هنا قمنا بتعريف
	  public enum Level {
	  EASY,
	  NORMAL,
	  HARD
	  }
	

هذا الملف مسؤول عنه مبرمج واحد و يكتب فيه الرسائل التي يمكن أن تظهر في اللعبة على أساس مستوى اللعبة.

Messages.java
	  public class Messages {

	  // لها لتحديد الرسالة التي سيتم إظهارها للمستخدم Level عند إستدعاء هذه الدالة يجب تمرير إحدى ثوابت الكلاس
	  // لها فإنها ستظهر خطأ أمام المبرمج الذي قام باستدعائها مباشرةً أثناء كتباة الكود Level إذا لم يتم تمرير إحدى ثوابت الـ
	  public void showPlayMessage(Level userLevel) {
	  switch (userLevel)
	  {
	  case EASY:
	  System.out.println("Play Game In Easy Mode");
	  break;
	  case NORMAL:
	  System.out.println("Play Game In normal Mode");
	  break;
	  case HARD:
	  System.out.println("Play Game In Hard Mode");
	  break;
	  }
	  }

	  }
	

هذا الملف مسؤول عنه مبرمج واحد و هو ما سيشغل اللعبة.

Main.java
	  public class Main {

	  public static void main(String[] args) {

	  // لتطبع رسالة على أساسه Level.EASY مع تمرير الثابت showPlayMessage() و استدعاء الدالة Messages هنا قمنا بإنشاء كائن من الكلاس
	  Messages msg = new Messages();
	  msg.showPlayMessage(Level.EASY);

	  }

	  }
	

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

Play Game In Easy Mode

مفهوم إدخال البيانات في جافا

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

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


أنواع البيانات التي يمكن إستقبالها باستخدام الكلاس Scanner

  • أعداد صحيحة, أي أعداد لا تقبل الفاصلة, مثال: 123

  • أعداد تقبل الفاصلة العشرية, مثال: 10.55

  • حرف واحد ( سواء حرف, رقم, رمز ), مثال: a أو 3 أو @

  • كلمة واحدة, مثل harmash

  • سطر كامل ( أي أكثر من كلمة ), مثال: harmash.com is one of the best sites to learn programming

  • صح أو خطأ, أي إجبار المستخدم على إدخال كلمة واحدة و هي إما true و إما false


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


مصطلحات تقنية

  • Delimiter تعني الـ Pattern المستخدمة في تحديد شكل المسافات الفارغة White Spaces.
    سترى لاحقاً أنه بإمكانك جعل مترجم جافا يعتبر حرف أو كلمة أو جملة ما تبدو و كأنها مسافة فارغة White Space.

  • Console Application تعني البرنامج الذي يعمل بدون واجهة مستخدم ( أي بدون GUI).
    إذاً جميع البرامج التي فعلناها في الدروس السابقة تسمى Console Application لأن النتيجة التي كنا نراها عند تشغيل البرنامج, كانت تظهر في ما يسمى Console.

طريقة جعل البرنامج يستقبل بيانات من المستخدم في جافا

في لغة جافا لكي تجعل البرنامج يستقبل معلومات من المستخدم عليك إتباع ثلاث خطوات أساسية:

  1. إستدعاء الكلاس Scanner الذي يحتوي على دوال إدخال المعلومات من المستخدمين.

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

  3. إستدعاء إحدى دوال إدخال المعلومات من هذا الكائن.



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

مثال

  1. إستدعاء الكلاس Scanner حتى نستطيع إنشاء كائن منه.

  2. import java.util.Scanner; 
    	  

  3. إنشاء كائن من الكلاس Scanner, هنا قمنا بتسميته input.

  4. Scanner input = new Scanner(System.in); 
    	  

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

  6. int a = input.nextInt();
    	  

إنتبه

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

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


المثال الأول

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

شاهد المثال »



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

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

شاهد المثال »



المثال الثالث

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

شاهد المثال »

كونستركتورات الكلاس Scanner في جافا

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

الكونستركتور مع تعريفه
public Scanner(File Source) يستخدم هذا الكونستركتور لقراءة البيانات من ملف معين.
public Scanner(File Source, String charsetName) يستخدم هذا الكونستركتور لقراءة البيانات من ملف معين, مع تحديد الترميز المستخدم عند قراءتهم.
public Scanner(InputStream source) يستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه InputStream
public Scanner(InputStream source, String charsetName) يستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه InputStream مع تحديد الترميز المستخدم عند قراءتهم.
public Scanner(Path source) يستخدم هذا الكونستركتور لقراءة البيانات من الملف الذي يشير له كائن الـ Path
public Scanner(Path source, String charsetName) يستخدم هذا الكونستركتور لقراءة البيانات من الملف الذي يشير له كائن الـ Path مع تحديد الترميز المستخدم عند قراءتهم.
public Scanner(Readable Source) يستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه Readable
public Scanner(ReadableByteChannel source) يستخدم هذا الكونستركتور لقراءة البيانات من كائن نوعه ReadableByteChannel
public 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() إلخ..


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

الدالة مع تعريفها
public String next() ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner.
و تستخدم ايضاً لإستقبال كلمة واحدة من المستخدم.
تابع القراءة »
public String next(Pattern pattern) ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت تتطابق مع كائن الـ Pattern الذي نمرره لها كـ Argument.
و تستخدم ايضاً لإستقبال كلمة واحدة من المستخدم.
تابع القراءة »
public String next(String pattern) ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت تتطابق مع الـ String الذي نمرره لها كـ Argument و الذي يمثل Pattern.
و تستخدم ايضاً لإستقبال كلمة واحدة من المستخدم.
تابع القراءة »
public String nextLine() ترجع السطر التالي الذي تم إدخاله في كائن الـ Scanner.
و تستخدم ايضاً لإستقبال سطر كامل من المعلومات من المستخدم.
تابع القراءة »
public boolean nextBoolean() ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع boolean, أي في حال كانت هذه القيمة true أو false ستقوم بإرجاعها.
و تستخدم ايضاً لإستقبال قيمة نوعها boolean من المستخدم.
تابع القراءة »
public byte nextByte() ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع byte.
و تستخدم ايضاً لإستقبال قيمة نوعها byte من المستخدم.
تابع القراءة »
public byte nextByte(int radix) ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع byte و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
و تستخدم ايضاً لإستقبال قيمة نوعها byte من المستخدم.
تابع القراءة »
public double nextDouble() ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع double.
و تستخدم ايضاً لإستقبال قيمة نوعها double من المستخدم.
تابع القراءة »
public float nextFloat() ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع float.
و تستخدم ايضاً لإستقبال قيمة نوعها float من المستخدم.
تابع القراءة »
public int nextInt() ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع int.
و تستخدم ايضاً لإستقبال قيمة نوعها int من المستخدم.
تابع القراءة »
public int nextInt(int radix) ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع int و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
و تستخدم ايضاً لإستقبال قيمة نوعها int من المستخدم.
تابع القراءة »
public long nextLong() ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع long.
و تستخدم ايضاً لإستقبال قيمة نوعها long من المستخدم.
تابع القراءة »
public long nextLong(int radix) ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع long و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
و تستخدم ايضاً لإستقبال قيمة نوعها long من المستخدم.
تابع القراءة »
public short nextShort() ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع short.
و تستخدم ايضاً لإستقبال قيمة نوعها short من المستخدم.
تابع القراءة »
public short nextShort(int radix) ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع short و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
و تستخدم ايضاً لإستقبال قيمة نوعها short من المستخدم.
تابع القراءة »


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

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


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

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


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

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

 مثال يشرح طريقة إدخال بيانات من المستخدم تخزينها في متغيرات في جافا

في المثال التالي قمنا بتعريف ثلاث متغيرات name, job, age. قمنا بتجهيز هذه المتغيرات لتخزين القيم التي سيطلب البرنامج من المستخدم إدخالها عند تشغيله.
سنستخدم الدالة nextLine() لإستقبال إسم المستخدم و وظيفته.
سنستخدم الدالة nextInt() لإستقبال عمرالمستخدم.


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;                                     // سنستخدم هذا المتغير لحفظ إسم الوظيفة الذي سيدخله المستخدم
	  int age;                                        // سنستخدم هذا المتغير لحفظ العمر الذي سيدخله المستخدم

	  try {
	  System.out.print("Enter a your name: ");    // هنا طلبنا من المستخدم إدخال إسمه
	  name = input.nextLine();                    // name هنا قمنا بإستقبال النص الذي سيدخله المستخدم و تخزينه في المتغير

	  System.out.print("Enter a your job: ");     // هنا طلبنا من المستخدم إدخال إسم الوظيفة
	  job = input.nextLine();                     // job هنا قمنا بإستقبال النص الذي سيدخله المستخدم و تخزينه في المتغير

	  System.out.print("Enter a your age: ");     // هنا طلبنا من المستخدم إدخال عمره
	  age = input.nextInt();                      // age هنا قمنا بإستقبال العدد الصحيح الذي سيدخله المستخدم و تخزينه في المتغير

	  // في الأخير سيتم عرض جميع المعلومات التي أدخلها المستخدم في لم يحدث أي خطأ أثناء إدخال البيانات
	  System.out.println("\n----------- User Info ------------");
	  System.out.println("Name: " +name);
	  System.out.println("Job: " +job);
	  System.out.println("Age: " +age);
	  }
	  catch (Exception e) {                           // هنا سيتم إلتقاط أي خطأ قد يحدث و عرضه
	  System.out.print(e.toString());
	  }
	  finally {                                       // Scanner في حال تم أو لم يتم إدخال البيانات, سيتم إغلاق الـ
	  input.close();
	  }

	  }

	  }
	

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

Enter a your name: Mhamad Harmush
Enter a your job: Programmer
Enter a your age: 22

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

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

في المثال التالي قمنا إنشاء مصفوفة إسمها notes, نوعها float تتألف من خمس عناصر. قمنا بتجهيز هذه المصفوفة لتخزين العلامات التي يدخلها الطالب.
سنستخدم الدالة nextFloat() لإستقبال العلامات (أي الأرقام) التي يدخلها الطالب المستخدم لهذا التطبيق لأنه قد يدخل علامات بها فاصلة عشرية.
بعد إدخال جميع العلامات التي يطلبها البرنامج من المستخدم, سيطبع لها معدله الوسطي.


Main.java
                    import java.util.Scanner;                           // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  Scanner input = new Scanner(System.in);     // input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  float[] notes = new float[5];               // سنستخدم هذه المصفوفة لتخزين جميع علامات المستخدم
	  float avg;                                  // سنستخدم هذا المتغير لتخزين المعدل الوسطي للمستخدم

	  System.out.println("Enter the notes of the following methods.");

	  try {

	  System.out.print("Java: ");             // هنا طلبنا من المستخدم إدخال علامة المادة الأولى
	  notes[0] = input.nextFloat();           // هنا قمنا بتخزين العلامة التي أدخلها في العنصر الأول في المصفوفة

	  System.out.print("HTML: ");             // هنا طلبنا من المستخدم إدخال علامة المادة الثانية
	  notes[1] = input.nextFloat();           // هنا قمنا بتخزين العلامة التي أدخلها في العنصر الثاني في المصفوفة

	  System.out.print("PHP: ");              // هنا طلبنا من المستخدم إدخال علامة المادة الثالثة
	  notes[2] = input.nextFloat();           // هنا قمنا بتخزين العلامة التي أدخلها في العنصر الثالث في المصفوفة

	  System.out.print("SQL: ");              // هنا طلبنا من المستخدم إدخال علامة المادة الرابعة
	  notes[3] = input.nextFloat();           // هنا قمنا بتخزين العلامة التي أدخلها في العنصر الرابع في المصفوفة

	  System.out.print("Linux: ");            // هنا طلبنا من المستخدم إدخال علامة المادة الخامسة
	  notes[4] = input.nextFloat();           // هنا قمنا بتخزين العلامة التي أدخلها في العنصر الخامس في المصفوفة

	  avg = (notes[0] + notes[1] + notes[2] + notes[3] + notes[4]) / 5;   // avg هنا قمنا بتخزين المعدل الوسطي في المتغير

	  if (avg >= 10) {                        // في حال كان المعدل أكبر أو يساوي 10, سيطبع الجملة التالية
	  System.out.println("Congratulation, your average is: " +avg);
	  }
	  else {                                  // في حال كان المعدل أقل من 10, سيطبع الجملة التالية
	  System.out.println("Sorry, you fail! your average is: " +avg);
	  }

	  }
	  catch (Exception e) {                       // هنا سيتم إلتقاط أي خطأ قد يحدث و عرضه
	  System.out.print(e.toString());
	  }
	  finally {                                   // Scanner في حال تم أو لم يتم إدخال البيانات, سيتم إغلاق الـ
	  input.close();
	  }

	  }

	  }
	

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

Enter the notes of the following methods.
Java: 18.5
HTML: 20
PHP: 13.5
SQL: 9
Linux: 7
Congratulation, your average is: 13.6

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

في المثال التالي قمنا بتعريف متغير إسمه name لحفظ إسم المستخدم, و متغير آخر إسمه password لحفظ كلمة المرور لهاذا المستخدم.
سنستخدم الدالة next() لإستقبال بيانات المستخدم.
بعد حفظ هذه البيانات في المتغيرات name و password, سنقوم بإنشاء ملف في جهاز المستخدم إسمه users.txt و نحفظ قيم هذه المتغيرات فيه.

ملاحظة: إستخدمنا الدالة next() بالتحديد لأن إسم المستخدم و كلمة المرور مهما كان حجمهما فإن كل واحد منهما يكون دائماً عبارة عن كلمة واحدة.


Main.java
                    import java.io.FileReader;         // و الذي سنستخدمه للقراءة من الملف الذي قمنا بإنشائه FileReader هنا قمنا باستدعاء الكلاس
	  import java.io.FileWriter;         // و الذي سنستخدمه للكتابة في الملف الذي سننشأه FileWriter هنا قمنا باستدعاء الكلاس
	  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 password;                            // سنستخدم هذا المتغير لتخزين كلمة مرور المستخدم

	  try {
	  System.out.print("User Name: ");        // هنا طلبنا من المستخدم إدخال علامة المادة الأولى
	  name = input.next();                    // هنا قمنا بتخزين العلامة التي أدخلها في العنصر الأول في المصفوفة

	  System.out.print("Password: ");         // هنا طلبنا من المستخدم إدخال علامة المادة الثانية
	  password = input.next();                // هنا قمنا بتخزين العلامة التي أدخلها في العنصر الثاني في المصفوفة

	  FileWriter fw = new FileWriter("users.txt", true);     // في حال لم يكن أصلاً موجوداً و فتحه للكتابة فيه users.txt لإنشاء ملف إسمه FileWriter هنا قمنا بإنشاء كائن نوعه

	  fw.write("User Name: " +name + "\n");                  // هنا قمنا بكتابة إسم المستخدم في الملف
	  fw.write("Password: " + password + "\n\n");            // ثم قمنا بكتابة كلمة المرور
	  fw.flush();                                            // بعدها قمنا بتفريغ الذاكرة
	  fw.close();                                            // بعدها قمنا بإغلاق الكائن المتصل بالملف

	  FileReader fr = new FileReader("users.txt");           // users.txt و الذي سنستخدمه لقراءة الأشياء الموجودة في الملف FileReader هنا قمنا بإنشاء كائن نوعه

	  int c;
	  while ((c = fr.read()) != -1) {     // هنا قمنا بإنشاء حلقة تمر على جميع أحرف الملف, في كل دورة تقرأ حرف من الملف
	  System.out.print((char)c);      // ثم تعرضه
	  }
	  fr.close();                         // بعدها قمنا بإغلاق الكائن المتصل بالملف
	  }
	  catch (Exception e) {                   // هنا سيتم إلتقاط أي خطأ قد يحدث و عرضه
	  System.out.print(e.toString());
	  }
	  finally {                               // Scanner في حال تم أو لم يتم إدخال البيانات, سيتم إغلاق الـ
	  input.close();
	  }

	  }

	  }
	

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

User Name: Mhamad
Password: abc@456

User Name: Mhamad
Password: abc@456

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

User Name: Hala
Password: 1234Hacker@

User Name: Mhamad
Password: abc@456

User Name: Hala
Password: 1234Hacker@

Java 

الدالة next()

تعريفها

ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner.



بناؤها

                  public String next() 
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner.


أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع الكلمات الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.

المثال الأول

Main.java
                    import java.util.Scanner;

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // يحتوي على أي كلمة, قم بتنفيذ الأوامر التالية input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while (input.hasNext())
	  {
	  // على سطر جديد Scanner هنا في كل دورة سيتم طباعة الكلمة التالية الموجودة في كائن الـ
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    Simple
	  math
	  operation:
	  2
	  +
	  3
	  =
	  5 
	

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

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

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 fname;                                   // سنستخدم هذا المتغير لحفظ الإسم الذي سيدخله المستخدم
	  String lname;                                   // سنستخدم هذا المتغير لحفظ إسم العائلة الذي سيدخله المستخدم

	  System.out.print("Enter your first name: ");    // هنا طلبنا من المستخدم إدخال إسمه
	  fname = input.next();                           // fname هنا قمنا بإستقبال الكلمة التي سيدخلها المستخدم و تخزينها في المتغير

	  System.out.print("Enter your last name: ");     // هنا طلبنا من المستخدم إدخال إسم عائلته
	  lname = input.next();                           // lname هنا قمنا بإستقبال الكلمة التي سيدخلها المستخدم و تخزينها في المتغير

	  // في الأخير سيتم عرض جميع المعلومات التي أدخلها المستخدم
	  System.out.println("\n----------- User Info ------------");
	  System.out.println("First Name: " +fname);
	  System.out.println("Last Name: " +lname);

	  }

	  }
	

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

Enter your first name: Mhamad
Enter your last name: Harmush

----------- User Info ------------
First Name: Mhamad
Last Name: Harmush

ملاحظة

هنا إفترضنا أن إسم المستخدم و إسم عائلته يتألف من كلمة واحدة فقط, فمثلاً إذا قام المستخدم بإدخال إسم مركب مثل Mohamad Ali.
لن يتم تخزينه بشكل صحيح لأن الدالة next() تخزن كلمة واحدة عندما تقوم باستدعائها, أي إذا قمت بإدخال أكثر من كلمة ثم نقرت على زر Enter سيتم تخزين الكلمة الأولى فقط, أي سيتم تخزين الكلمة Mohamad فقط.

Java

الدالة next(Pattern pattern)

تعريفها

ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت تتطابق مع كائن الـ Pattern الذي نمرره لها كـ Argument.



بناؤها

                  public String next(Pattern pattern)
  


باراميترات

pattern: هو كائن نوعه Pattern يمثل النص الذي سيتم البحث عنه في كائن الـ Scanner.



قيمة الإرجاع

ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner و التي تتطابق مع كائن الـ Pattern الذي نمرره لها كـ Argument.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع الكلمات الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستدعاء الدالة next() مرتين.

المثال الأول

Main.java
                    import java.util.Scanner;           // Scanner هنا قمنا باستدعاء الكلاس
	  import java.util.regex.Pattern;     // Pattern هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // سيتم عرضها imple إذا كانت تبدأ بأي حرف,يليه input هنا سيتم فحص أول كلمة موجودة في الكائن
	  System.out.println(input.next(Pattern.compile(".imple")));

	  // إذا كانت تتألف من 4 أحرف سيتم عرضها input هنا سيتم فحص ثاني كلمة موجودة في الكائن
	  System.out.println(input.next(Pattern.compile("....")));

	  }

	  }
	

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

                    Simple
	  math 
	

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

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

Main.java
                    import java.util.Scanner;                             // Scanner هنا قمنا باستدعاء الكلاس
	  import java.util.regex.Pattern;                       // Pattern هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  String fname;                                 // سنستخدم هذا المتغير لحفظ الإسم الذي سيدخله المستخدم
	  String lname;                                 // سنستخدم هذا المتغير لحفظ إسم العائلة الذي سيدخله المستخدم

	  System.out.print("Enter first name: ");       // هنا طلبنا من المستخدم إدخال إسمه
	  fname = input.next(Pattern.compile("...*"));  // بشرط أن تتألف من 3 حروف على الأقل fname هنا قمنا بإستقبال الكلمة التي سيدخلها المستخدم و تخزينها في المتغير

	  System.out.print("Enter last name: ");        // هنا طلبنا من المستخدم إدخال إسم عائلته
	  lname = input.next(Pattern.compile("..."));   // بشرط أن تتألف من 3 حروف فقط lname هنا قمنا بإستقبال الكلمة التي سيدخلها المستخدم و تخزينها في المتغير

	  // في الأخير سيتم عرض جميع المعلومات التي أدخلها المستخدم
	  System.out.println("\n----------- User Info ------------");
	  System.out.println("First Name: " +fname);
	  System.out.println("Last Name: " +lname);

	  }

	  }
	

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

Enter first name: Mohamad
Enter last name: Ali

----------- User Info ------------
First Name: Mohamad
Last Name: Ali

Java

الدالة next(String pattern)

تعريفها

ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت تتطابق مع الـ String الذي نمرره لها كـ Argument و الذي يمثل Pattern.



بناؤها

                  public String next(String pattern)
  


باراميترات

pattern: هو كائن نوعه String عبارة عن Pattern و يمثل النص الذي سيتم البحث عنه في كائن الـ Scanner.



قيمة الإرجاع

ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner و التي تتطابق مع الـ String الذي نمرره لها كـ Argument.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع الكلمات الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستدعاء الدالة next() مرتين.

المثال الأول

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // سيتم عرضها imple إذا كانت تبدأ بأي حرف,يليه input هنا سيتم فحص أول كلمة موجودة في الكائن
	  System.out.println(input.next(".imple"));

	  // إذا كانت تتألف من 4 أحرف سيتم عرضها input هنا سيتم فحص ثاني كلمة موجودة في الكائن
	  System.out.println(input.next("...."));

	  }

	  }
	

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

                    Simple
	  math 
	

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

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

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 fname;                                 // سنستخدم هذا المتغير لحفظ الإسم الذي سيدخله المستخدم
	  String lname;                                 // سنستخدم هذا المتغير لحفظ إسم العائلة الذي سيدخله المستخدم

	  System.out.print("Enter first name: ");       // هنا طلبنا من المستخدم إدخال إسمه
	  fname = input.next("...*");                   // بشرط أن تتألف من 3 حروف على الأقل fname هنا قمنا بإستقبال الكلمة التي سيدخلها المستخدم و تخزينها في المتغير

	  System.out.print("Enter last name: ");        // هنا طلبنا من المستخدم إدخال إسم عائلته
	  lname = input.next("...");                    // بشرط أن تتألف من 3 حروف فقط lname هنا قمنا بإستقبال الكلمة التي سيدخلها المستخدم و تخزينها في المتغير

	  // في الأخير سيتم عرض جميع المعلومات التي أدخلها المستخدم
	  System.out.println("\n----------- User Info ------------");
	  System.out.println("First Name: " +fname);
	  System.out.println("Last Name: " +lname);

	  }

	  }
	

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

Enter first name: Mohamad
Enter last name: Ali

----------- User Info ------------
First Name: Mohamad
Last Name: Ali

Java

الدالة nextLine()

تعريفها

ترجع السطر التالي الذي تم إدخاله في كائن الـ Scanner.
و تستخدم ايضاً لإستقبال سطر كامل من المعلومات من المستخدم.



بناؤها

                  public String nextLine()
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع السطر التالي الذي تم إدخاله في كائن الـ Scanner.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع الأسطر الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل سطر موجود في كائن الـ Scanner ثم تعرضه بواسطة الدالة nextLine().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNextLine() ترجع true.

المثال الأول

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = " line 1 \n line 2 \n line 3";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // يحتوي عل سطر آخر, قم بطباعته input أي طالما أن الكائن ,true ترجع hasNextLine() هنا قلنا أنه طالما أن الدالة
	  while (input.hasNextLine())
	  {
	  System.out.println(input.nextLine());
	  }

	  }

	  }
	

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

                    line 1
	  line 2
	  line 3
	

في المثال التالي سيطلب البرنامج من المستخدم كتابة تعريف صغير حول موقع harmash.com, بعدها سيقوم بعرض المعلومات التي قام بإدخلها.

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

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 description;                             // سنستخدم هذا المتغير لحفظ النص الذي سيدخله المستخدم

	  System.out.println("What is harmash.com?");     // harmash.com هنا طلبنا من المستخدم كتابة تعريف صغير حول موقع
	  description = input.nextLine();                 // description هنا قمنا بإستقبال النص الذي سيدخله المستخدم و تخزينه في

	  // في الأخير سيتم عرض جميع المعلومات التي أدخلها المستخدم
	  System.out.println("\n----------- Website Description ------------");
	  System.out.println(description);

	  }

	  }
	

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

What is harmash.com?
harmash.com is the biggest website that teach programming, networking and systems for free

----------- Website Description ------------
harmash.com is the biggest website that teach programming, networking and systems for free

Java الدالة nextBoolean()

تعريفها

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع boolean, أي في حال كانت هذه القيمة true أو false ستقوم بإرجاعها.



بناؤها

                  public boolean nextBoolean()
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت من النوع boolean.
ترجعها كـ boolean.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • InputMismatchException: في حال كانت القيمة التالية ليست من النوع boolean.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع القيم الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.
إذا كانت الكلمة من النوع boolean سيكتب بجانبها (this is a boolean value).

المثال الأول

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "If you define a boolean variable, then it can take true or false as value";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // ليس فارغاً, قم بتنفيذ الأوامر الموجودة داخل الحلقة input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while(input.hasNext())
	  {
	  if(input.hasNextBoolean())
	  System.out.println(input.nextBoolean() + " (this is a boolean value)");
	  else
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    If
	  you
	  define
	  a
	  boolean
	  variable,
	  then
	  it
	  can
	  take
	  true (this is a boolean value)
	  or
	  false (this is a boolean value)
	  as
	  value 
	

في المثال التالي سيطلب البرنامج من المستخدم الإجابة على بعض الأسئلة بصح أو خطأ ( أي بـ true أو false).
بعدها سيعرض له جميع الأسئلة و الأجوبة التي قام بإدخالها.

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

Main.java
                    import java.util.Scanner;                           // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  boolean answer_1;                           // سنستخدم هذا المتغير لحفظ عدد سنوات الخبرة التي سيدخلها المستخدم
	  boolean answer_2;                           // سنستخدم هذا المتغير لحفظ عدد سنوات الخبرة التي سيدخلها المستخدم
	  boolean answer_3;                           // سنستخدم هذا المتغير لحفظ عدد سنوات الخبرة التي سيدخلها المستخدم

	  // answer_1 هنا طلبنا من المستخدم الإجابة عن السؤال الأول و قمنا بتخزين الجواب الذي أدخله في المتغير
	  System.out.println("1) Are you a programmer?");
	  answer_1 = input.nextBoolean();

	  // answer_2 هنا طلبنا من المستخدم الإجابة عن السؤال الثاني و قمنا بتخزين الجواب الذي أدخله في المتغير
	  System.out.println("2) Do you like painting?");
	  answer_2 = input.nextBoolean();

	  // answer_3 هنا طلبنا من المستخدم الإجابة عن السؤال الثالث و قمنا بتخزين الجواب الذي أدخله في المتغير
	  System.out.println("3) Is your college better than harmash?");
	  answer_3 = input.nextBoolean();

	  // في الأخير سيتم عرض عدد سنوات الخبرة التي لدى المتسخدم
	  System.out.println("\n----------- User Answers ------------");
	  System.out.println("1) Are you a programmer? " +answer_1);
	  System.out.println("2) Do you like painting? " +answer_2);
	  System.out.println("3) Do you like harmash.com? " +answer_3);

	  }

	  }
	

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

1) Are you a programmer?
true
2) Do you like painting?
false
3) Do you like harmash.com?
true

----------- User Answers ------------
1) Are you a programmer? true
2) Do you like painting? false
3) Do you like harmash.com? true

Java الدالة nextByte()

تعريفها

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع byte.



بناؤها

                  public byte nextByte() 
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت من النوع byte.
ترجعها كـ byte.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • InputMismatchException: في حال كانت القيمة التالية ليست من النوع byte و أيضاُ في حال كانت قيمتها العددية أكبر أو أصغر من القيمة الممكن تخزينها فيها.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع القيم الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.
إذا كانت الكلمة من النوع byte سيكتب بجانبها (this is a byte value).

المثال الأول

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // ليس فارغاً, قم بتنفيذ الأوامر الموجودة داخل الحلقة input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while(input.hasNext())
	  {
	  if(input.hasNextByte())
	  System.out.println(input.nextByte() + " (this is a byte value)");
	  else
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    Simple
	  math
	  operation:
	  2 (this is a byte value)
	  +
	  3 (this is a byte value)
	  =
	  5 (this is a byte value) 
	

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

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

Main.java
                    import java.util.Scanner;                                        // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  byte year;                                               // سنستخدم هذا المتغير لحفظ عدد سنوات الخبرة التي سيدخلها المستخدم

	  System.out.print("Enter your years of experience: ");    // هنا طلبنا من المستخدم إدخال رقم يمثل عدد سنوات الخبرة التي لديه
	  year = input.nextByte();                                 // year هنا قمنا بإستقبال العدد الذي سيدخله المستخدم و تخزينه في المتغير

	  // في الأخير سيتم عرض عدد سنوات الخبرة التي لدى المتسخدم
	  System.out.println("\n----------- User Info ------------");
	  System.out.println("User years experience: " +year+ " years");

	  }

	  }
	

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

Enter your years of experience: 3

----------- User Info ------------
User years experience: 3 years
__________&&&______;&&&___________;&&&&________;

Java الدالة nextByte(int radix)

تعريفها

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع byte و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.



بناؤها

                  public byte nextByte(int radix) 
  


باراميترات

الـ radix هو int يستخدم هنا لمعرفة إذا كانت القيمة التي نفحصها تمثل قيمة binary - octal - decimal - hexadecimal.
الـradix يمكن أن يكون 2 - 8 - 10 - 16 بالترتيب كما فوق.



قيمة الإرجاع

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت من النوع byte و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
ترجعها كـ byte.


أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • InputMismatchException: في حال كانت القيمة التالية ليست من النوع byte و أيضاُ في حال كانت قيمتها العددية أكبر أو أصغر من القيمة الممكن تخزينها فيها.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع القيم الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.
إذا كانت الكلمة من النوع byte و تتطابق مع الـ radix الموضوع سيكتب بجانبها (this is a byte value).

المثال الأول

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // ليس فارغاً, قم بتنفيذ الأوامر الموجودة داخل الحلقة input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while(input.hasNext())
	  {
	  if(input.hasNextByte(4))
	  System.out.println(input.nextByte(4) + " (this is a byte value)");
	  else
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    Simple
	  math
	  operation:
	  2 (this is a byte value)
	  +
	  3 (this is a byte value)
	  =
	  5 
	

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

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

Main.java
                    import java.util.Scanner;                                        // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  byte year;                                               // سنستخدم هذا المتغير لحفظ عدد سنوات الخبرة التي سيدخلها المستخدم

	  System.out.print("Enter your years of experience: ");    // هنا طلبنا من المستخدم إدخال رقم يمثل عدد سنوات الخبرة التي لديه
	  year = input.nextByte(10);                               // year هنا قمنا بإستقبال العدد الذي سيدخله المستخدم و تخزينه في المتغير

	  // في الأخير سيتم عرض عدد سنوات الخبرة التي لدى المتسخدم
	  System.out.println("\n----------- User Info ------------");
	  System.out.println("User years experience: " +year+ " years");

	  }

	  }
	

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

Enter your years of experience: 3

----------- User Info ------------
User years experience: 3 years

Java الدالة nextDouble()

تعريفها

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع double.



بناؤها

                  public double nextDouble()
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع double.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • InputMismatchException: في حال كانت القيمة التالية ليست من النوع double و أيضاُ في حال كانت قيمتها العددية أكبر أو أصغر من القيمة الممكن تخزينها فيها.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع القيم الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.
إذا كانت الكلمة تعتبر من النوع double سيكتب بجانبها (this is a double value).

المثال الأول

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // ليس فارغاً, قم بتنفيذ الأوامر الموجودة داخل الحلقة input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while(input.hasNext())
	  {
	  if(input.hasNextDouble())
	  System.out.println(input.nextDouble() + " (this is a double value)");
	  else
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    Simple
	  math
	  operation:
	  2.0 (this is a double value)
	  +
	  3.0 (this is a double value)
	  =
	  5.0 (this is a double value) 
	

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

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

Main.java
                    import java.util.Scanner;                            // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  double salary;                              // سنستخدم هذا المتغير لحفظ قيمة الراتب الشهري التي سيدخلها المستخدم

	  System.out.print("Enter your salary: ");    // هنا طلبنا من المستخدم إدخال راتبه الشهري
	  salary = input.nextDouble();                // salary هنا قمنا بإستقبال العدد الذي سيدخله المستخدم و تخزينه في المتغير

	  // في الأخير سيتم عرض راتب المستخدم
	  System.out.println("\n----------- User Info ------------");
	  System.out.println("User salary: " +salary+ "$" );

	  }

	  }
	

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

Enter your salary: 850.55

----------- User Info ------------
User salary: 850.55$

Java الدالة nextFloat()

تعريفها

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع float.



بناؤها

                  public float nextFloat()
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع float.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • InputMismatchException: في حال كانت القيمة التالية ليست من النوع float و أيضاُ في حال كانت قيمتها العددية أكبر أو أصغر من القيمة الممكن تخزينها فيها.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع القيم الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.
إذا كانت الكلمة من النوع float سيكتب بجانبها (this is a float value).

المثال الأول

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // ليس فارغاً, قم بتنفيذ الأوامر الموجودة داخل الحلقة input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while(input.hasNext())
	  {
	  if(input.hasNextFloat())
	  System.out.println(input.nextFloat() + " (this is a float value)");
	  else
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    Simple
	  math
	  operation:
	  2.0 (this is a float value)
	  +
	  3.0 (this is a float value)
	  =
	  5.0 (this is a float value) 
	

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

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

Main.java
                    import java.util.Scanner;                            // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  float salary;                               // سنستخدم هذا المتغير لحفظ قيمة الراتب الشهري التي سيدخلها المستخدم

	  System.out.print("Enter your salary: ");    // هنا طلبنا من المستخدم إدخال راتبه الشهري
	  salary = input.nextFloat();                 // salary هنا قمنا بإستقبال العدد الذي سيدخله المستخدم و تخزينه في المتغير

	  // في الأخير سيتم عرض راتب المستخدم
	  System.out.println("\n----------- User Info ------------");
	  System.out.println("User salary: " +salary+ "$" );

	  }

	  }
	

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

Enter your salary: 850.55

----------- User Info ------------
User salary: 850.55$

Java الدالة nextInt()

تعريفها

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع int.



بناؤها

                  public int nextInt()
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع int.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • InputMismatchException: في حال كانت القيمة التالية ليست من النوع int و أيضاُ في حال كانت قيمتها العددية أكبر أو أصغر من القيمة الممكن تخزينها فيها.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع القيم الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.
إذا كانت الكلمة من النوع int سيكتب بجانبها (this is a int value).

المثال الأول

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // ليس فارغاً, قم بتنفيذ الأوامر الموجودة داخل الحلقة input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while(input.hasNext())
	  {
	  if(input.hasNextInt())
	  System.out.println(input.nextInt() + " (this is a int value)");
	  else
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    Simple
	  math
	  operation:
	  2 (this is a int value)
	  +
	  3 (this is a int value)
	  =
	  5 (this is a int value) 
	

في المثال التالي سيطلب البرنامج من المستخدم إدخال عدد صحيح ( يمثل id ), بعدها سيقوم بعرضه.

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

Main.java
                    import java.util.Scanner;                           // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  int id;                                     // الذي سيدخله المستخدم id سنستخدم هذا المتغير لحفظ رقم الـ

	  System.out.print("Enter your id: ");        // الخاص فيه id هنا طلبنا من المستخدم إدخال رقم الـ
	  id = input.nextInt();                       // id هنا قمنا بإستقبال العدد الذي سيدخله المستخدم و تخزينه في المتغير

	  // الذي قام بإدخاله id في الأخير سيتم عرض رقم الـ
	  System.out.println("\n----------- User Info ------------");
	  System.out.println("User id: " +id);

	  }

	  }
	

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

Enter your id: 125

----------- User Info ------------
User id: 125

Java الدالة nextInt(int radix)

تعريفها

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع int و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.



بناؤها

                  public int nextInt(int radix)
  


باراميترات

الـ radix هو int يستخدم هنا لمعرفة إذا كانت القيمة التي نفحصها تمثل قيمة binary - octal - decimal - hexadecimal.
الـradix يمكن أن يكون 2 - 8 - 10 - 16 بالترتيب كما فوق.



قيمة الإرجاع

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت من النوع int و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
ترجعها كـ int.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • InputMismatchException: في حال كانت القيمة التالية ليست من النوع int و أيضاُ في حال كانت قيمتها العددية أكبر أو أصغر من القيمة الممكن تخزينها فيها.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع القيم الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.
إذا كانت الكلمة من النوع int و تتطابق مع الـ radix الموضوع سيكتب بجانبها (this is a int value).

مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // ليس فارغاً, قم بتنفيذ الأوامر الموجودة داخل الحلقة input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while(input.hasNext())
	  {
	  if(input.hasNextInt(4))
	  System.out.println(input.nextInt(4) + " (this is a int value)");
	  else
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    Simple
	  math
	  operation:
	  2 (this is a int value)
	  +
	  3 (this is a int value)
	  =
	  5
	

Java

الدالة nextLong()

تعريفها

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع long.



بناؤها

                  public long nextLong() 
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع long.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • InputMismatchException: في حال كانت القيمة التالية ليست من النوع long و أيضاُ في حال كانت قيمتها العددية أكبر أو أصغر من القيمة الممكن تخزينها فيها.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع القيم الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.
إذا كانت الكلمة من النوع long سيكتب بجانبها (this is a long value).

المثال الأول

Main.java
                    import java.util.Scanner;    // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // ليس فارغاً, قم بتنفيذ الأوامر الموجودة داخل الحلقة input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while(input.hasNext())
	  {
	  if(input.hasNextLong())
	  System.out.println(input.nextLong() + " (this is a long value)");
	  else
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    Simple
	  math
	  operation:
	  2 (this is a long value)
	  +
	  3 (this is a long value)
	  =
	  5 (this is a long value) 
	

في المثال التالي سيطلب البرنامج من المستخدم إدخال عدد صحيح ( يمثل id ), بعدها سيقوم بعرضه.

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

Main.java
                    import java.util.Scanner;                           // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  long id;                                    // الذي سيدخله المستخدم id سنستخدم هذا المتغير لحفظ رقم الـ

	  System.out.print("Enter your id: ");        // هنا طلبنا من المستخدم إدخال إسمه
	  id = input.nextLong();                      // id هنا قمنا بإستقبال العدد الذي سيدخله المستخدم و تخزينه في المتغير

	  // الذي قام بإدخاله id في الأخير سيتم عرض رقم الـ
	  System.out.println("\n----------- User Info ------------");
	  System.out.println("User id: " +id);

	  }

	  }
	

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

Enter your id: 125

----------- User Info ------------
User id: 125

Java الدالة nextLong(int radix)

تعريفها

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع long و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.



بناؤها

                  public boolean nextLong(int radix)
  


باراميترات

الـ radix هو int يستخدم هنا لمعرفة إذا كانت القيمة التي نفحصها تمثل قيمة binary - octal - decimal - hexadecimal.
الـradix يمكن أن يكون 2 - 8 - 10 - 16 بالترتيب كما فوق.



قيمة الإرجاع

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت من النوع long و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
ترجعها كـ long.


أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • InputMismatchException: في حال كانت القيمة التالية ليست من النوع long و أيضاُ في حال كانت قيمتها العددية أكبر أو أصغر من القيمة الممكن تخزينها فيها.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع القيم الموجودة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.
إذا كانت الكلمة من النوع long و تتطابق مع الـ radix الموضوع سيكتب بجانبها (this is a long value).

مثال

Main.java
                    import java.util.Scanner;    // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // ليس فارغاً, قم بتنفيذ الأوامر الموجودة داخل الحلقة input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while(input.hasNext())
	  {
	  if(input.hasNextLong(4))
	  System.out.println(input.nextLong(4) + " (this is a long value)");
	  else
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    Simple
	  math
	  operation:
	  2 (this is a long value)
	  +
	  3 (this is a long value)
	  =
	  5
	

Java الدالة radix()

تعريفها

ترجع الـ radix الإفتراضية لكائن الـ Scanner.



بناؤها

                  public int radix()
  


باراميترات

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



قيمة الإرجاع

ترجع عدد صحيح نوعه int يمثل الـ radix الإفتراضية لكائن الـ Scanner.



مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  // input الذي يستخدمه الكائن radix هنا قمنا بعرض نوع الـ
	  System.out.println("Used radix is: " +input.radix());

	  }

	  }
	

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

                    Used radix is: 10
	

Java الدالة nextShort(int radix)

تعريفها

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت هذه القيمة تعتبر من النوع short و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.



بناؤها

                  public short nextShort(int radix)
  


باراميترات

الـ radix هو int يستخدم هنا لمعرفة إذا كانت القيمة التي نفحصها تمثل قيمة binary - octal - decimal - hexadecimal.
الـradix يمكن أن يكون 2 - 8 - 10 - 16 بالترتيب كما فوق.



قيمة الإرجاع

ترجع القيمة التالية التي تم إدخالها في كائن الـ Scanner في حال كانت من النوع short و كانت تتطابق مع الـ radix الذي نمرره لها كـ Argument.
ترجعها كـ short.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • InputMismatchException: في حال كانت القيمة التالية ليست من النوع short و أيضاُ في حال كانت قيمتها العددية أكبر أو أصغر من القيمة الممكن تخزينها فيها.

  • NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع القيم الموجودة في كائن الـ Scanner.

    .


في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner ثم تعرضها بواسطة الدالة next().
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext() ترجع true.
إذا كانت الكلمة من النوع short و تتطابق مع الـ radix الموضوع سيكتب بجانبها (this is a short value).

مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // ليس فارغاً, قم بتنفيذ الأوامر الموجودة داخل الحلقة input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while(input.hasNext())
	  {
	  if(input.hasNextShort(4))
	  System.out.println(input.nextShort(4) + " (this is a short value)");
	  else
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    Simple
	  math
	  operation:
	  2 (this is a short value)
	  +
	  3 (this is a short value)
	  =
	  5
	

Java الدالة findInLine()

تعريفها

ترجع الـ Pattern الذي يستخدمه كائن الـ Scanner.
findInLine تعني الأحرف ( أو نظام الأحرف ) الذي يستخدمه كائن الـ Scanner في تخزين البيانات المدخلة.



بناؤها

                  // الشكل الأول
	public String findInLine(Pattern pattern)

	// الشكل الثاني
	public String findInLine(String pattern)
  


باراميترات

pattern: هو كائن نوعه Pattern أو String ( يمثل pattern ) كـ Argument.



قيمة الإرجاع

  • ترجع النص الذي يتطابق مع الـ Pattern.

  • ترجع null في حال لم يتم إيجاد نص يتطابق مع الـ Pattern.



أخطاء محتملة

IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.



في المثال التالي سندخل سطر من البيانات في كونستركتور كائن الـ Scanner.
سنستخدم الدالة findInLine() التي تأخذ كائن نوعه String كـ Argument.

المثال الأول

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // و بعدها سيتم عرض هذه الكلمة ath عن كلمة تبدأ بأي حرف و تنتهي بـ input هنا سيتم البحث في بيانات الكائن
	  System.out.println(input.findInLine(".ath"));

	  // input هنا قمنا بعرض باقي البيانات الموجودة في نفس السطر في الكائن
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    math
	  operation: 2 + 3 = 5 
	

في المثال التالي سندخل سطر من البيانات في كونستركتور كائن الـ Scanner.
سنستخدم الدالة findInLine() التي تأخذ كائن نوعه Pattern كـ Argument.

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

Main.java
                    import java.util.Scanner;           // Scanner هنا قمنا باستدعاء الكلاس
	  import java.util.regex.Pattern;     // Pattern هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // و بعدها سيتم عرض هذه الكلمة ath عن كلمة تبدأ بأي حرف و تنتهي بـ input هنا سيتم البحث في بيانات الكائن
	  System.out.println(input.findInLine(Pattern.compile(".ath")));

	  // input هنا قمنا بعرض باقي البيانات الموجودة في نفس السطر في الكائن
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    math
	  operation: 2 + 3 = 5 
	

في المثال التالي سندخل سطر من البيانات في كونستركتور كائن الـ Scanner.
سنستخدم الدالة findInLine() التي تأخذ كائن نوعه String كـ Argument.
إنتبه: هنا تعمدنا عدم إيجاد تطابق, أي البحث عن شيء غير موجود.

المثال الثالث

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // و بعدها سيتم عرض هذه الكلمة java عن كلمة تبدأ بأي حرف و تنتهي بـ input هنا سيتم البحث في بيانات الكائن
	  // null إذاً هنا سيتم طباعة
	  System.out.println(input.findInLine(".java"));

	  // تعيدك إلى أول حرف موجود فيه في حال لم تجد تطابق findInLine() لأن الدالة input هنا سيتم عرض كل البيانات الموجودة في كائن الـ
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    null
	  Simple math operation: 2 + 3 = 5 
	

Java الدالة findWithinHorizon()

تعريفها

تبحث في الـ Scanner الذي قام باستدعاءها عن أول مكان يتطابق مع الـ Pattern, و تبدأ في البحث من الـ index رقم 0 إلى الـ index الذي نضعه في الباراميتر الثاني.



بناؤها

                  // الشكل الأول
	public String findWithinHorizon(Pattern pattern, int horizon)

	// الشكل الثاني
	public String findWithinHorizon(String pattern, int horizon)
  


باراميترات

  • pattern: هو كائن نوعه Pattern أو String ( يمثل pattern ) كـ Argument.

  • horizon: هو متغير نوعه int يمثل رقم الـ index الذي ستتوقف عنده عملية البحث.



قيمة الإرجاع

  • ترجع النص الذي يتطابق مع الـ Pattern.

  • ترجع null في حال لم يتم إيجاد نص يتطابق مع الـ Pattern.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • IllegalArgumentException: في حال كانت قيمة الـ horizon أصغر من صفر.



في المثال التالي سندخل سطر من البيانات في كونستركتور كائن الـ Scanner.
سنستخدم الدالة findWithinHorizon() التي تأخذ كائن نوعه String كـ Argument.

المثال الأول

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // يليه أي حرف , بعدها قمنا بطباعة النتيجة at عن كلمة تبدأ بأي حرف, يليه input هنا قمنا بالبحث في أول 11 حرف في الكائن
	  System.out.println(input.findWithinHorizon(".at.", 11));

	  // input هنا قمنا بعرض باقي البيانات الموجودة في نفس السطر في الكائن
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    math
	  operation: 2 + 3 = 5 
	

المثال التالي هو نفس المثال السابق, لكننا قمنا باستخدام الدالة findWithinHorizon() التي تأخذ كائن نوعه Pattern كـ Argument.

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

Main.java
                    import java.util.Scanner;            // Scanner هنا قمنا باستدعاء الكلاس
	  import java.util.regex.Pattern;      // Pattern هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // يليه أي حرف , بعدها قمنا بطباعة النتيجة at عن كلمة تبدأ بأي حرف, يليه input هنا قمنا بالبحث في أول 11 حرف في الكائن
	  System.out.println(input.findWithinHorizon(Pattern.compile(".ath"), 11));

	  // input هنا قمنا بعرض باقي البيانات الموجودة في نفس السطر في الكائن
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    math
	  operation: 2 + 3 = 5 
	

في المثال التالي سندخل سطر من البيانات في كونستركتور كائن الـ Scanner.
سنستخدم الدالة findWithinHorizon() التي تأخذ كائن نوعه String كـ Argument.
إنتبه: هنا ضيقنا نطاق البحث, و بحثنا في أول 7 أحرف فقط, و بالتالي تعمدنا عدم إيجاد تطابق.

المثال الثالث

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // يليه أي حرف , بعدها قمنا بطباعة النتيجة at عن كلمة تبدأ بأي حرف, يليه input هنا قمنا بالبحث في أول 7 أحرف في الكائن
	  // null إذاً هنا سيتم طباعة
	  System.out.println(input.findWithinHorizon(".at.", 7));

	  // تعيدك إلى أول حرف موجود فيه في حال لم تجد تطابق findWithinHorizon() لأن الدالة input هنا سيتم عرض كل البيانات الموجودة في كائن الـ
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    null
	  Simple math operation: 2 + 3 = 5 
	

Java الدالة match()

تعريفها

ترجع كائن نوعه MatchResult يمثل نتيجة آخر عملية بحث تم إجرائها على كائن الـ Scanner مع شرح مفصل.
و ترجع null في حال عدم حدوث أي إستثناء بسبب كائن الـ Scanner.



بناؤها

                  public MatchResult match() 
  


باراميترات

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



قيمة الإرجاع

ترجع كائن نوعه MatchResult يمثل نتيجة آخر عملية بحث تم إجرائها على كائن الـ Scanner مع شرح مفصل.
و ترجع null في حال عدم حدوث أي إستثناء بسبب كائن الـ Scanner.



أخطاء محتملة

IllegalStateException: في حال لم يكن يوجد عملية تطابق سابقة.


مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // الموضوعة Pattern لأنه يوجد كلمة تتطابق مع الـ true و تنتهي بحرفين عشوائيين. سترجع ma هنا قمنا بالبحث عن كلمة تبدأ بـ
	  // لا يسبب مشاكل match() فهذا يعني أنها وجدت تتطابق و بالتالي أصبح استدعاء الدالة true بما أنها أرجعت
	  input.findInLine("ma..");

	  // هنا قمنا بطباعة نتيجة آخر عملية بحث فعلناها
	  System.out.println("Last match result: " + input.match());

	  // nextLine() بواسطة دالة الإدخال input هنا قمنا بعرض باقي البيانات الموجودة في نفس السطر في الكائن
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    Last match result: java.util.regex.Matcher[pattern=ma.. region=0,32 lastmatch=math]
operation: 2 + 3 = 5

Java الدالة hasNext()

تعريفها

ترجع true في حال كان يوجد كلمة تالية في كائن الـ Scanner.



بناؤها

                  public boolean hasNext() 
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع true في حال كان يوجد كلمة تالية في كائن الـ Scanner.



أخطاء محتملة

IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستدعاء الدالة hasNext() ثلاث مرات.

مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // لأنه تم إيجاد كلمة true هنا سترجع hasNext() الدالة
	  System.out.println("hasNext()? " + input.hasNext());

	  // لأنه تم إيجاد كلمة true هنا سترجع hasNext() الدالة
	  System.out.println("hasNext()? " + input.hasNext());

	  // nextLine() بواسطة دالة الإدخال input هنا قمنا بعرض باقي البيانات الموجودة في نفس السطر في الكائن
	  System.out.println(input.nextLine());

	  // input لأنه لم يعد يوجد أي كلمة بعد أن قمنا بالمرور على كامل البيانات الموجودة في الكائن false هنا سترجع hasNext() الدالة
	  System.out.println("hasNext()? " + input.hasNext());

	  }

	  }
	

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

                    hasNext()? true
	  hasNext()? true
	  Simple math operation: 2 + 3 = 5
	  hasNext()? false 
	

Java الدالة hasNext(Pattern pattern)

تعريفها

ترجع true في حال كان يوجد نص تالي في كائن الـ Scanner قيمته تساوي قيمة نص الـ Pattern التي نمررها لها كـ Argument.



بناؤها

                  public boolean hasNext(Pattern pattern)
  


باراميترات

pattern: هو كائن نوعه Pattern يمثل النص الذي سيتم البحث عنه في كائن الـ Scanner.



قيمة الإرجاع

ترجع true في حال كان يوجد نص تالي في كائن الـ Scanner قيمته تساوي قيمة نص الـ Pattern التي نمررها لها كـ Argument.



أخطاء محتملة

IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستدعاء الدالة hasNext() ثلاث مرات, و كل مرة حاولنا البحث عن كلمة مختلفة.

مثال

Main.java
                    import java.util.Scanner;             // Scanner هنا قمنا باستدعاء الكلاس
	  import java.util.regex.Pattern;       // Pattern هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // mple لأنه تم إيجاد كلمة تبدأ بحرفين يليهما true هنا سترجع hasNext() الدالة
	  System.out.println("hasNext()? " + input.hasNext(Pattern.compile("..mple")));

	  // next() بواسطة دالة الإدخال input هنا قمنا بعرض الكلمة التالية الموجودة في الكائن
	  System.out.println(input.next());

	  // يليه حرف at لأنه تم إيجاد كلمة تبدأ بحرف يليه true هنا سترجع hasNext() الدالة
	  System.out.println("hasNext()? " + input.hasNext(Pattern.compile(".at.")));

	  // next() بواسطة دالة الإدخال input هنا قمنا بعرض الكلمة التالية الموجودة في الكائن
	  System.out.println(input.next());

	  // java لأنه لم يجد كلمة تبدأ بحرف يليه false هنا سترجع hasNext() الدالة
	  System.out.println("hasNext()? " + input.hasNext(Pattern.compile(".java")));

	  // nextLine() بواسطة دالة الإدخال input هنا قمنا بعرض باقي البيانات الموجودة في نفس السطر في الكائن
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    hasNext()? true
	  Simple
	  hasNext()? true
	  math
	  hasNext()? false
	  operation: 2 + 3 = 5 
	

Java الدالة hasNext(String pattern)

تعريفها

ترجع true في حال كان يوجد نص تالي في كائن الـ Scanner قيمته تساوي قيمة الـ String (التي تمثل Pattern) التي نمررها لها كـ Argument.



بناؤها

                  public boolean hasNext(String pattern) 
  


باراميترات

pattern: هو كائن نوعه String عبارة عن Pattern و يمثل النص الذي سيتم البحث عنه في كائن الـ Scanner.



قيمة الإرجاع

ترجع true في حال كان يوجد نص تالي في كائن الـ Scanner قيمته تساوي قيمة نص الـ Pattern التي نمررها لها كـ Argument.



أخطاء محتملة

IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستدعاء الدالة hasNext() ثلاث مرات, و كل مرة حاولنا البحث عن كلمة مختلفة.

مثال

Main.java
                    import java.util.Scanner;             // Scanner هنا قمنا باستدعاء الكلاس
	  import java.util.regex.Pattern;       // Pattern هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // mple لأنه تم إيجاد كلمة تبدأ بحرفين يليهما true هنا سترجع hasNext() الدالة
	  System.out.println("hasNext()? " + input.hasNext(Pattern.compile("..mple")));

	  // next() بواسطة دالة الإدخال input هنا قمنا بعرض الكلمة التالية الموجودة في الكائن
	  System.out.println(input.next());

	  // يليه حرف at لأنه تم إيجاد كلمة تبدأ بحرف يليه true هنا سترجع hasNext() الدالة
	  System.out.println("hasNext()? " + input.hasNext(Pattern.compile(".at.")));

	  // next() بواسطة دالة الإدخال input هنا قمنا بعرض الكلمة التالية الموجودة في الكائن
	  System.out.println(input.next());

	  // java لأنه لم يجد كلمة تبدأ بحرف يليه false هنا سترجع hasNext() الدالة
	  System.out.println("hasNext()? " + input.hasNext(Pattern.compile(".java")));

	  // nextLine() بواسطة دالة الإدخال input هنا قمنا بعرض باقي البيانات الموجودة في نفس السطر في الكائن
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    hasNext()? true
	  Simple
	  hasNext()? true
	  math
	  hasNext()? false
	  operation: 2 + 3 = 5 
	

Java الدالة hasNextInt()

تعريفها

ترجع true في حال كان يوجد قيمة تالية في كائن الـ Scanner يمكن التعامل معها كـ int.



بناؤها

                  public boolean hasNextInt() 
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع true في حال كان يوجد قيمة تالية في كائن الـ Scanner يمكن التعامل معها كـ int.



أخطاء محتملة

IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner من خلال الدالة hasNext().
كل كلمة نمر عليها سيتم إستدعاء الدالة hasNextInt() عليها لمعرفة إذا كانت هذه الكلمة تمثل قيمة من النوع الـ int.

مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // يحتوي على أي كلمة, قم بتنفيذ الأوامر التالية input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while (input.hasNext())
	  {
	  // int يمكن التعامل معها كـ input إذا كانت الكلمة التالية الموجودة في الكائن true سيتم طباعة
	  System.out.println("hasNextInt()? " + input.hasNextInt());

	  // هنا في كل دورة سيتم طباعة الكلمة التي سيتم فحص نوعها
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    hasNextInt()? false
	  Simple
	  hasNextInt()? false
	  math
	  hasNextInt()? false
	  operation:
	  hasNextInt()? true
	  2
	  hasNextInt()? false
	  +
	  hasNextInt()? true
	  3
	  hasNextInt()? false
	  =
	  hasNextInt()? true
	  5
	

Java الدالة hasNextInt(int radix)

تعريفها

ترجع true في حال كان يوجد قيمة تالية في كائن الـ Scanner يمكن التعامل معها كـ int و تتطابق مع الـ radix الذي نمرره لها كـ Argument.



بناؤها

                  public boolean hasNextInt(int radix) 
  


باراميترات

الـ radix هو int يستخدم هنا لمعرفة إذا كانت قيمة الكلمة التي نفحصها تمثل قيمة binary - octal - decimal - hexadecimal.
الـradix يمكن أن يكون 2 - 8 - 10 - 16 بالترتيب كما فوق.



قيمة الإرجاع

ترجع true في حال كان يوجد قيمة تالية في كائن الـ Scanner يمكن التعامل معها كـ int و تتطابق مع الـ radix الذي نمرره لها كـ Argument.



أخطاء محتملة

IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بإنشاء حلقة while تمر على كل كلمة موجودة في كائن الـ Scanner من خلال الدالة hasNext().
كل كلمة نمر عليها سيتم إستدعاء الدالة hasNextInt(2) عليها لمعرفة إذا كانت هذه الكلمة تمثل قيمة من النوع الـ int و إذا كانت تساوي 0 أو 1 فقط.

مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 0 + 1 + 1 = 2";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // يحتوي على أي كلمة, قم بتنفيذ الأوامر التالية input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while (input.hasNext())
	  {
	  // و كانت تساوي 0 أو 1 فقط int يمكن التعامل معها كـ input إذا كانت الكلمة التالية الموجودة في الكائن true سيتم طباعة
	  System.out.println("hasNextInt()? " + input.hasNextInt(2));

	  // هنا في كل دورة سيتم طباعة الكلمة التي سيتم فحص نوعها
	  System.out.println(input.next());
	  }

	  }

	  }
	

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

                    hasNextInt()? false
	  Simple
	  hasNextInt()? false
	  math
	  hasNextInt()? false
	  operation:
	  hasNextInt()? true
	  0
	  hasNextInt()? false
	  +
	  hasNextInt()? true
	  1
	  hasNextInt()? false
	  +
	  hasNextInt()? true
	  1
	  hasNextInt()? false
	  =
	  hasNextInt()? false
	  2 
	

Java الدالة hasNextLine()

تعريفها

ترجع true في حال كان يوجد سطر تالي في كائن الـ Scanner.
تذكر: أن كل \n تعني إبدأ سطر جديد.



بناؤها

                  public boolean hasNextLine() 
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع true في حال كان يوجد سطر تالي في كائن الـ Scanner.



أخطاء محتملة

IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.



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

مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = " line 1 \n line 2 \n line 3";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  while (input.hasNextLine())
	  {
	  // int يمكن التعامل معها كـ input إذا كانت الكلمة التالية الموجودة في الكائن true سيتم طباعة
	  System.out.println("hasNextLine()? " + input.hasNextLine());

	  // هنا في كل دورة سيتم طباعة الكلمة التي سيتم فحص نوعها
	  System.out.println(input.nextLine());
	  }

	  // input سيكون الرنامج قد مر على جميع الأسطار الموجودة في الكائن while لأنه بعد إنتهاء الحلقة false سيتم طباعة
	  System.out.println("hasNextLine()? " + input.hasNextLine());

	  }

	  }
	

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

                    hasNextLine()? true
	  line 1
	  hasNextLine()? true
	  line 2
	  hasNextLine()? true
	  line 3
	  hasNextLine()? false 
	

Java الدالة close()

تعريفها

تغلق الـ 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:

Java الدالة delimiter()

تعريفها

ترجع الـ Pattern الذي يستخدمه كائن الـ Scanner في تحديد شكل المسافات الفارغة.
Delimiter تعني الـ Pattern المستخدمة في تحديد شكل المسافات الفارغة White Spaces.



بناؤها

                  public Pattern delimiter() 
  


باراميترات

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



قيمة الإرجاع

ترجع الـ Pattern الذي يستخدمه كائن الـ Scanner في تحديد شكل المسافات الفارغة.



مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  // input الذي يستخدمه الكائن delimiter هنا قمنا بعرض الـ
	  System.out.println("Used Delimiter: " +input.delimiter());

	  }

	  }
	

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

                    Used Delimiter: \p{javaWhitespace}+
	

Java الدالة locale()

تعريفها

ترجع كائن نوعه Locale يمثل نوع الترميز الذي يستخدمه كائن الـ Scanner عند قراءة و تخزين البيانات.
من المهم جداً معرفة نوع الترميز المستخدم في حال كنت تنوي إستخدام Regular Expressions للتعامل مع البيانات التي تم إدخالها.

لتحديد نوع الترميز الذي سيتسخدمه كائن الـ Scanner نستخدم الدالة useLocale().



بناؤها

                  public Locale locale() 
  


باراميترات

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



قيمة الإرجاع

ترجع كائن نوعه Locale يمثل نوع الترميز الذي يستخدمه كائن الـ Scanner عند قراءة و تخزين البيانات.



مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  // input هنا قمنا بعرض نوع الترميز الذي يستخدمه الكائن
	  System.out.println("Used locale is: " +input.locale());

	  }

	  }
	

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

                    Used locale is: en_US
	

Java الدالة radix()

تعريفها

ترجع الـ radix الإفتراضية لكائن الـ Scanner.



بناؤها

                  public int radix()
  


باراميترات

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



قيمة الإرجاع

ترجع عدد صحيح نوعه int يمثل الـ radix الإفتراضية لكائن الـ Scanner.



مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  // input الذي يستخدمه الكائن radix هنا قمنا بعرض نوع الـ
	  System.out.println("Used radix is: " +input.radix());

	  }

	  }
	

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

                    Used radix is: 10
	

Java الدالة reset()

تعريفها

ترجع الخصائص الإفتراضية لكائن الـ Scanner.



بناؤها

                  public Scanner reset()
  


باراميترات

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



قيمة الإرجاع

ترجع الخصائص الإفتراضية لكائن الـ Scanner.



مثال

Main.java
                    import java.util.Scanner;       // Scanner هنا قمنا باستدعاء الكلاس
	  import java.util.Locale;        // Locale  هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  // الإفتراضية input هنا قمنا بعرض خصائص الكائن
	  System.out.println("Default local is: " +input.locale());
	  System.out.println("Default Radix is: " +input.radix());
	  System.out.println();

	  // input هنا قمنا بتغيير نوع الترميز الذي يستخدمه الكائن
	  input.useLocale(Locale.FRANCE);
	  // input الذي يستخدمه الكائن radix هنا قمنا بتغيير نوع الـ
	  input.useRadix(16);

	  // input هنا قمنا بعرض الخصائص الجديدة التي وضعناها للكائن
	  System.out.println("New local is: " +input.locale());
	  System.out.println("New Radix is: " +input.radix());
	  System.out.println();

	  // input هنا قمنا بإرجاع الخصائص اللإفتراضية للكائن
	  input.reset();

	  // من جديد input هنا قمنا بعرض خصائص الكائن
	  System.out.println("Default local is: " +input.locale());
	  System.out.println("Default Radix is: " +input.radix());

	  }

	  }
	

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

                    Default local is: en_US
	  Default Radix is: 10

	  New local is: fr_FR
	  New Radix is: 16

	  Default local is: en_US
	  Default Radix is: 10 
	

Javaالدالة skip(Pattern pattern)

تعريفها

تتخطى النص التالي في كائن الـ Scanner في حال كان يتطابق مع كائن الـ Pattern مع تجاهل الـ delimiters.



بناؤها

                  public Scanner skip(Pattern pattern)
  


باراميترات

pattern: هو كائن نوعه Pattern يمثل النص الذي سيتم تخطيه في كائن الـ Scanner.



قيمة الإرجاع

ترجع بيانات كائن الـ Scanner التي بقيت بعد عملية التخطي.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • NoSuchElementException: في حال لم يتم إيجاد نص يتطابق مع الـ Pattern.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستخدام الدالة skip() لتخطي الكلمة الأولى التي تم إدخالها في كائن الـ Scanner.

مثال

Main.java
                    import java.util.Scanner;               // Scanner هنا قمنا باستدعاء الكلاس
	  import java.util.regex.Pattern;         // Pattern هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // input هنا سيتم تجاوز أول 7 أحرف موجودة في الكائن
	  input.skip(Pattern.compile("......."));

	  // input هنا قمنا بعرض باقي البيانات الموجودة في نفس السطر في الكائن
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    math operation: 2 + 3 = 5
	

Java الدالة skip(String pattern)

تعريفها

تتخطى النص التالي في كائن الـ Scanner في حال كان يتطابق مع الـ String الذي نمرره لها كـ Argument و الذي يمثل Pattern مع تجاهل الـ delimiters.



بناؤها

                  public Scanner skip(String pattern)
  


باراميترات

pattern: هو كائن نوعه String يمثل النص الذي سيتم تخطيه في كائن الـ Scanner.



قيمة الإرجاع

ترجع بيانات كائن الـ Scanner التي بقيت بعد عملية التخطي.



أخطاء محتملة

  • IllegalStateException: في حال كان كائن الـ Scanner مغلقاً.

  • NoSuchElementException: في حال لم يتم إيجاد نص يتطابق مع الـ Pattern.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستخدام الدالة skip() لتخطي الكلمة الأولى التي تم إدخالها في كائن الـ Scanner.

مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Simple math operation: 2 + 3 = 5";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // input هنا سيتم تجاوز أول 7 أحرف موجودة في الكائن
	  input.skip(".......");

	  // input هنا قمنا بعرض باقي البيانات الموجودة في نفس السطر في الكائن
	  System.out.println(input.nextLine());

	  }

	  }
	

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

                    math operation: 2 + 3 = 5
	

Java الدالة toString()

تعريفها

ترجع String تمثل كافة معلومات كائن الـ Scanner.



بناؤها

                  public String toString()
  


باراميترات

ليس لها باراميتر.



قيمة الإرجاع

ترجع String تمثل كافة معلومات كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا بعرض كافة معلومات كائن الـ Scanner.

مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

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

	  // input هنا قمنا بطباعة كافة معلومات الكائن
	  System.out.println(input.toString());

	  }

	  }
	

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

                    java.util.Scanner[delimiters=\p{javaWhitespace}+][position=0][match valid=false][need input=false][source closed=false][skipped=false][group separator=\,][decimal separator=\.][positive prefix=][negative prefix=\Q-\E][positive suffix=][negative suffix=][NaN string=\Q�\E][infinity string=\Q∞\E]
	

Java الدالة useDelimiter(Pattern pattern)

تعريفها

تستخدم لجعل حرف أو كلمة أو جملة تبدو كمسافة فارغة في كائن الـ Scanner.
ملاحظة: الحرف أو الكلمة أو الجملة التي يتم جعلها تبدو كمسافة فارغة, ستظهر هكذا فقط أمام دوال التشييك الموجودة في الكلاس Scanner.



بناؤها

                  public Scanner useDelimiter(Pattern pattern)
  


باراميترات

pattern: هو كائن نوعه Pattern يمثل النص الذي سيتم إعتباره مسافة فارغة في كائن الـ Scanner.



قيمة الإرجاع

ترجع النص الذي يتطابق مع الـ Pattern كمسافة فارغة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستخدام الدالة useDelimiter() لتحويل كل كلمة java يتم إيجادها إلى مسافة فارغة.

مثال

Main.java
                    import java.util.Scanner;              // Scanner هنا قمنا باستدعاء الكلاس
	  import java.util.regex.Pattern;        // Pattern هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "First you should study java 101, then java 102, then java 103 etc..";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // يتم إيجادها تمثل مسافة فارغة java هنا قلنا أنه سيتم إعتبار كل كلمة
	  input.useDelimiter(Pattern.compile("java"));

	  // يحتوي على أي كلمة, سيتم طباعتها input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  // مسافة فارغة كلما وجدها لأنه قام بالتشييك عليها قبل أن يطبعها java تذكر أنه سيعتبر الكلمة
	  while (input.hasNext())
	  {
	  System.out.print(input.next());
	  }

	  }

	  }
	

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

                    First you should study&nbsp 101, then&nbsp 102, then&nbsp 103 etc..
	

Java الدالة useDelimiter(String pattern)

تعريفها

تستخدم لجعل حرف أو كلمة أو جملة تبدو كمسافة فارغة في كائن الـ Scanner.
ملاحظة: الحرف أو الكلمة أو الجملة التي يتم جعلها تبدو كمسافة فارغة, ستظهر هكذا فقط أمام دوال التشييك الموجودة في الكلاس Scanner.



بناؤها

                  public Scanner useDelimiter(String pattern)
  


باراميترات

pattern: هو كائن نوعه String يمثل النص الذي سيتم إعتباره مسافة فارغة في كائن الـ Scanner.



قيمة الإرجاع

ترجع النص الذي يتطابق مع الـ Pattern كمسافة فارغة في كائن الـ Scanner.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستخدام الدالة useDelimiter() لتحويل كل كلمة java يتم إيجادها إلى مسافة فارغة.

مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "First you should study java 101, then java 102, then java 103 etc..";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // يتم إيجادها تمثل مسافة فارغة java هنا قلنا أنه سيتم إعتبار كل كلمة
	  input.useDelimiter("java");

	  // يحتوي على أي كلمة, سيتم طباعتها input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  // مسافة فارغة كلما وجدها لأنه قام بالتشييك عليها قبل أن يطبعها java تذكر أنه سيعتبر الكلمة
	  while (input.hasNext())
	  {
	  System.out.print(input.next());
	  }

	  }

	  }
	

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

                    First you should study&nbsp 101, then&nbsp 102, then&nbsp 103 etc..
	

Java الدالة useLocale(Locale locale)

تعريفها

تستخدم لتحديد الترميز الذي سيستخدمه كائن الـ Scanner عند قراءة و تخزين البيانات.



بناؤها

                  public Scanner useLocale(Locale locale)
  


باراميترات

locale: هو كائن نوعه Locale يحدد الترميز الذي سيستخدمه كائن الـ Scanner.



قيمة الإرجاع

ترجع النص الموجود في كائن الـ Scanner بالترميز الذي تم تحديده.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستخدام الدالة useLocale() لتغيير نوع الترميز حتى يناسب اللغة الفرنسية.

مثال

Main.java
                    import java.util.Locale;         // Locale هنا قمنا باستدعاء الكلاس
	  import java.util.Scanner;        // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "Java est un langage de programmation informatique orienté objet créé par James Gosling";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // هنا قمنا باعتماد ترميز اللغة الفرنسية, لأننا نتعامل مع بيانات مكتوبة باللغة الفرنسية
	  input.useLocale(Locale.FRANCE);

	  // Scanner هنا قمنا بطباعة النص الموجود في كائن الـ
	  System.out.print(input.nextLine());

	  }

	  }
	

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

                    Java est un langage de programmation informatique orienté objet créé par James Gosling
	

Java الدالة useRadix(int radix)

تعريفها

تستخدم لتحديد الـ radix الذي سيستخدمه كائن الـ Scanner عند قراءة و تخزين أي رقم.
ملاحظة: الأرقام أو الأحرف التي يتم تحويل نوعها إلى نوع آخر, تظهر قيمتها الجديدة فقط إذا قمت بعرضها باستخدام الدوال التي تعرض الشيء كرقم, مثل nextInt(), nextLong()



بناؤها

                  public Scanner useRadix(int radix)
  


باراميترات

الـ radix هو int يستخدم هنا لمعرفة إذا كانت قيمة الكلمة التي نفحصها تمثل قيمة binary - octal - decimal - hexadecimal.
الـ radix يمكن أن يكون 2 - 8 - 10 - 16 بالترتيب كما فوق.



قيمة الإرجاع

ترجع الأرقام الموجودة في كائن الـ Scanner بالـ radix الذي تم تحديده.



في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner.
بعدها قمنا باستخدام الدالة useRadix() لتحويل نوع أي رقم أو حرف موجود في كائن الـ Scanner إلى النوع hexadecimal.

مثال

Main.java
                    import java.util.Scanner;   // Scanner هنا قمنا باستدعاء الكلاس

	  public class Main {

	  public static void main(String[] args) {

	  // Scanner هنا قمنا بإنشاء نص و الذي سندخله في كائن الـ
	  String s = "In Hexadecimal 'A' = A";

	  // s و أدخلنا فيه مباشرةً النص الموجود في المتغير ,input إسمه Scanner هنا قمنا بإنشاء كائن من الكلاس
	  Scanner input = new Scanner(s);

	  // input يساوي 16 لأي رقم موجود في الكائن radix هنا قمنا بوضع الـ
	  input.useRadix(16);

	  // يحتوي على أي كلمة, سيتم فحصها أولاً. input أي طالما أن الكائن ,true ترجع hasNext() هنا قلنا أنه طالما أن الدالة
	  while (input.hasNext())
	  {
	  // حتى نعرضها كرقم و بالتالي يتم تحويلها بشكل صحيح nextInt() سيتم عرضها بواسطة الدالة int إذا كانت من النوع
	  if (input.hasNextInt())
	  System.out.print(input.nextInt() + " ");

	  // next() إذا كانت أي شيء آخر لا يمثل رقم, سيتم عرضها كما هي بواسطة الدالة
	  else
	  System.out.print(input.next() + " ");
	  }

	  }

	  }
	

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

                    In Hexadecimal 'A' = 10