إدخال البيانات في جافا
في الدروس السابقة, كنا نكتب الكود ثم نقوم بتجربته فيتنفذ كما هو, بمعنى أننا كنا أصلاً نعرف ما سيظهر عند تشغيل الكود لأننا قمنا بإدخال القيم في المتغيرات قبل تشغيل البرنامج.
الكلاس 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.
طريقة جعل البرنامج يستقبل بيانات من المستخدم في جافا
في لغة جافا لكي تجعل البرنامج يستقبل معلومات من المستخدم عليك إتباع ثلاث خطوات أساسية:
إستدعاء الكلاس
Scanner
الذي يحتوي على دوال إدخال المعلومات من المستخدمين.إنشاء كائن من هذا الكلاس لأنك لا تستطيع إستخدام دوال الكلاس
Scanner
إلا من خلال الكائن الذي يشير إليه.إستدعاء إحدى دوال إدخال المعلومات من هذا الكائن.
إذاً ستحتاج إلى الأوامر التالية في كل برنامج ( يعتبر Console Application ) تطلب فيه من المستخدم إدخال بيانات من لوحة المفاتيح.
مثال
إستدعاء الكلاس
Scanner
حتى نستطيع إنشاء كائن منه.إنشاء كائن من الكلاس
Scanner
, هنا قمنا بتسميتهinput
.إستدعاء إحدى دوال إدخال البيانات من خلال كائن الـ
Scanner
الذي يفترض أنك قمت بإنشائه سابقاً.
هنا قمنا بإستدعاء الدالةnextInt()
من هذا الكائن و التي تعني أنه عند تشغيل البرنامج و عندما يأتي لتنفيذ هذا الكود, سيقوم بإنتظار المستخدم لإدخال عدد صحيح من لوحة المفاتيح, بعدها سيتم تخزين ما أدخله المستخدم في المتغيرa
.
import java.util.Scanner;
Scanner input = new Scanner(System.in);
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
يستخدم لجعل البرنامج يستقبل بيانات المستخدم من لوحة المفاتيح وقت التشغيل.
أمثلة شاملة حول أدخال بيانات من المستخدم في جافا
مثال يشرح طريقة إدخال بيانات من المستخدم تخزينها في متغيرات في جافا
في المثال التالي قمنا بتعريف ثلاث متغيرات name
, job
, age
. قمنا بتجهيز هذه المتغيرات لتخزين القيم التي سيطلب البرنامج من المستخدم إدخالها عند تشغيله.
سنستخدم الدالة nextLine()
لإستقبال إسم المستخدم و وظيفته.
سنستخدم الدالة nextInt()
لإستقبال عمرالمستخدم.
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 job: Programmer
Enter a your age: 28
----------- User Info ------------
Name: alawiri saddam
Job: Programmer
Age: 22
مثال يشرح طريقة إدخال بيانات من المستخدم و تخزينها في جافا
في المثال التالي قمنا إنشاء مصفوفة إسمها notes
, نوعها float
تتألف من خمس عناصر. قمنا بتجهيز هذه المصفوفة لتخزين العلامات التي يدخلها الطالب.
سنستخدم الدالة nextFloat()
لإستقبال العلامات (أي الأرقام) التي يدخلها الطالب المستخدم لهذا التطبيق لأنه قد يدخل علامات بها فاصلة عشرية.
بعد إدخال جميع العلامات التي يطلبها البرنامج من المستخدم, سيطبع لها معدله الوسطي.
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(); } } }
•سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
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()
بالتحديد لأن إسم المستخدم و كلمة المرور مهما كان حجمهما فإن كل واحد منهما يكون دائماً عبارة عن كلمة واحدة.
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(); } } }
•سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
Password: abc@456
User Name: saddam
Password: abc@456
•في حال قمنا بتشغيله من جديد, سنحصل على النتيجة التالية إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
Password: 1234Hacker@
User Name: saddam
Password: abc@456
User Name: Hala
Password: 1234Hacker@
Java دوال الكلاس Scanner
في جافا
ملاحظة: في أغلب الأمثلة الموضوعة في الجدول التالي سنستخدم كونستركتور الكلاس Scanner
الذي يأخذ String
كـ Argument حتى ندخل بيانات مباشرةً في كائن الـ Scanner
بدل إدخالها بواسطة دوال الإدخال. و النتيجة هي نفسها.
كما أننا لن نقوم باستخدام الجمل ( try
, catch
, finally
) حتى يكون التركيز فقط على الدوال التي نريدك أن تركز عليها.
عند التعامل مع الكلاس Scanner
, كل دالة تبدأ بكلمة next
تعتبر دالة من دوال الإدخال.
أمثلة: next()
- nextLine()
- nextInt()
- nextFloat()
إلخ..
java - الدالة next()
ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner
.
وتستخدم لاستقبال كلمه واحده من المستخدم .
بناؤها
public String next()
باراميترات
ليس لها باراميتر.
قيمة الإرجاع
ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner
.
أخطاء محتملة
IllegalStateException: في حال كان كائن الـ
Scanner
مغلقاً.NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع الكلمات الموجودة في كائن الـ
Scanner
.
في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner
.
بعدها قمنا بإنشاء حلقة while
تمر على كل كلمة موجودة في كائن الـ Scanner
ثم تعرضها بواسطة الدالة next()
.
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNext()
ترجع true
.
المثال الأول
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
في المثال التالي سيطلب البرنامج من المستخدم إدخال إسمه و إسم عائلته, بعدها سيقوم بعرض المعلومات التي قام بإدخلها.
المثال الثاني
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 last name: Alawiri
----------- User Info ------------
First Name: Saddam
Last Name: Alawiri
ملاحظة
هنا إفترضنا أن إسم المستخدم و إسم عائلته يتألف من كلمة واحدة فقط, فمثلاً إذا قام المستخدم بإدخال إسم مركب مثل Saddam Ali
.
لن يتم تخزينه بشكل صحيح لأن الدالة next()
تخزن كلمة واحدة عندما تقوم باستدعائها, أي إذا قمت بإدخال أكثر من كلمة ثم نقرت على زر Enter سيتم تخزين الكلمة الأولى فقط, أي سيتم تخزين الكلمة Saddam فقط.
Note
___________;&&&&________;
java - الدالة next(Pattern pattern)
تعريفها
ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner
في حال كانت تتطابق مع كائن الـ Pattern
الذي نمرره لها كـ Argument.
وتستخدم لاستقبال كلمه واحده من المستخدم
بناؤها
public String next(Pattern pattern)
باراميترات
pattern
: هو كائن نوعه Pattern
يمثل النص الذي سيتم البحث عنه في كائن الـ Scanner
.
قيمة الإرجاع
ترجع الكلمة التالية التي تم إدخالها في كائن الـ Scanner
و التي تتطابق مع كائن الـ Pattern
الذي نمرره لها كـ Argument.
أخطاء محتملة
IllegalStateException: في حال كان كائن الـ
Scanner
مغلقاً.NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع الكلمات الموجودة في كائن الـ
Scanner
.
في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner
.
بعدها قمنا باستدعاء الدالة next()
مرتين.
المثال الأول
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
في المثال التالي سيطلب البرنامج من المستخدم إدخال إسمه و إسم عائلته, بعدها سيقوم بعرض المعلومات التي قام بإدخلها.
المثال الثاني
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 last name: Ali
----------- User Info ------------
First Name: Saddam
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()
مرتين.
المثال الأول
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
في المثال التالي سيطلب البرنامج من المستخدم إدخال إسمه و إسم عائلته, بعدها سيقوم بعرض المعلومات التي قام بإدخلها.
المثال الثاني
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 last name: Ali
----------- User Info ------------
First Name: Saddam
Last Name: Ali
Java الدالة nextLine()
تعريفها
ترجع السطر التالي الذي تم إدخاله في كائن الـ Scanner
.
و تستخدم ايضاً لإستقبال سطر كامل من المعلومات من المستخدم.
بناؤها
public String nextLine()
باراميترات
ليس لها باراميتر.
قيمة الإرجاع
ترجع السطر التالي الذي تم إدخاله في كائن الـ Scanner
.
أخطاء محتملة
IllegalStateException: في حال كان كائن الـ
Scanner
مغلقاً.NoSuchElementException: في حال قمت باستدعائها بعد أن تم إرجاع جميع الأسطر الموجودة في كائن الـ
Scanner
.
في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner
.
بعدها قمنا بإنشاء حلقة while
تمر على كل سطر موجود في كائن الـ Scanner
ثم تعرضه بواسطة الدالة nextLine()
.
ستستمر هذه الحلقة في تكرار نفسها طالما أن الدالة hasNextLine()
ترجع true
.
المثال الأول
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
في المثال التالي سيطلب البرنامج من المستخدم كتابة تعريف صغير حول موقع alawirisaddam.blogspot.com , بعدها سيقوم بعرض المعلومات التي قام بإدخلها.
المثال الثاني
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 alawirisaddam.blogspot.com?"); // alawirisaddam.blogspot.com هنا طلبنا من المستخدم كتابة تعريف صغير حول موقع description = input.nextLine(); // description هنا قمنا بإستقبال النص الذي سيدخله المستخدم و تخزينه في // في الأخير سيتم عرض جميع المعلومات التي أدخلها المستخدم System.out.println("\n----------- Website Description ------------"); System.out.println(description); } }
•سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
alawirisaddam.blogspot.com is the biggest website that teach programming, networking and systems for free
----------- Website Description ------------
alawirisaddam.blogspot.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)
.
المثال الأول
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
).
بعدها سيعرض له جميع الأسئلة و الأجوبة التي قام بإدخالها.
المثال الثاني
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 alawiri.com? " +answer_3); } }
•سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
true
2) Do you like painting?
false
3) Do you like alawiri.com?
true
----------- User Answers ------------
1) Are you a programmer? true
2) Do you like painting? false
3) Do you like alawiri.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)
.
المثال الأول
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)
في المثال التالي سيطلب البرنامج من المستخدم إدخال عدد صحيح يمثل عدد سنوات الخبرة التي لديه, بعدها سيقوم بعرضه.
المثال الثاني
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"); } }
•سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
----------- 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)
.
المثال الأول
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
في المثال التالي سيطلب البرنامج من المستخدم إدخال عدد صحيح يمثل عدد سنوات الخبرة التي لديه, بعدها سيقوم بعرضه.
المثال الثاني
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"); } }
•سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
----------- 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)
.
المثال الأول
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)
في المثال التالي سيطلب البرنامج من المستخدم إدخال متوسط راتبه الشهري, بعدها سيقوم بعرضه.
المثال الثاني
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+ "$" ); } }
•سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
----------- 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)
.
المثال الأول
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)
في المثال التالي سيطلب البرنامج من المستخدم إدخال متوسط راتبه الشهري, بعدها سيقوم بعرضه.
المثال الثاني
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+ "$" ); } }
•سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
----------- 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)
.
المثال الأول
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 ), بعدها سيقوم بعرضه.
المثال الثاني
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); } }
•سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
----------- 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)
.
مثال
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)
.
المثال الأول
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 ), بعدها سيقوم بعرضه.
المثال الثاني
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); } }
•سنحصل على النتيجة التالية عند التشغيل إذا قمنا بإدخال نفس المعلومات التي أدخلناها عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
----------- 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)
.
مثال
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
.
مثال
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)
.
مثال
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 دوال البحث الموجوده في الكلاس Scanner
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.
المثال الأول
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.
المثال الثاني
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.
إنتبه: هنا تعمدنا عدم إيجاد تطابق, أي البحث عن شيء غير موجود.
المثال الثالث
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.
المثال الأول
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.
المثال الثاني
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 أحرف فقط, و بالتالي تعمدنا عدم إيجاد تطابق.
المثال الثالث
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: في حال لم يكن يوجد عملية تطابق سابقة.
مثال
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 دوال التشييك الموجوده في الكلاس Scanner
Java الدالة hasNext()
تعريفها
ترجع true
في حال كان يوجد كلمة تالية في كائن الـ Scanner
.
بناؤها
public boolean hasNext()
باراميترات
ليس لها باراميتر.
قيمة الإرجاع
ترجع true
في حال كان يوجد كلمة تالية في كائن الـ Scanner
.
أخطاء محتملة
IllegalStateException: في حال كان كائن الـ Scanner
مغلقاً.
في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner
.
بعدها قمنا باستدعاء الدالة hasNext()
ثلاث مرات.
مثال
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()
ثلاث مرات, و كل مرة حاولنا البحث عن كلمة مختلفة.
مثال
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()
ثلاث مرات, و كل مرة حاولنا البحث عن كلمة مختلفة.
مثال
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
.
مثال
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 فقط.
مثال
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()
.
مثال
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 دوال المعالجة الموجودة في الكلاس Scanner
Java الدالة close()
تعريفها
تغلق الـ Scanner, أي تمنع إدخال أي بيانات جديدة في البرنامج عن طريق كائن الـ Scanner
.
من المهم جدا إغلاق كائن الـ Scanner
عند الإنتهاء منه حتى تضمن عدم حدوث أي مشكلة في حال إستخدمت كلاس أو إنترفيس آخر في البرنامج يستخدم بدوره الكلاس Scanner
.
بناؤها
public void close()
باراميترات
لا تقبل أي باراميتر.
قيمة الإرجاع
لا ترجع قيمة.
في المثال التالي سيطلب البرنامج من المستخدم إدخال عمره و وظيفته, بعدها سيقوم بعرض المعلومات التي قام بإدخلها.
المثال الأول
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 job: Programmer
----------- User Info ------------
Name: saddam alawiri
Job: Programmer
المثال التالي هو نفس المثال السابق و لكننا قمنا بإغلاق كائن الـ Scanner
بعد إدخال الإسم, الأمر الذي سيؤدي إلى حدوث خطأ منطقي أثناء تشغيل البرنامج لأنه سيجد أنك حاولت إدخال بيانات في حين أنك قمت بإغلاق كائن الـ Scanner
الذي يسمح بإدخال البيانات.
المثال الثاني
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); } }
•سيتوقف البرنامج و يظهر الخطأ التالي عند تشغيل البرنامج.
قمنا بتعليم البيانات التي إنتظرنا البرنامج لإدخالها من لوحة المفاتيح باللون الأصفر.
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
في تحديد شكل المسافات الفارغة.
مثال
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
عند قراءة و تخزين البيانات.
مثال
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
.
مثال
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
.
مثال
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
.
مثال
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
.
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
.
مثال
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
يتم إيجادها إلى مسافة فارغة.
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  101, then  102, then  103 etc..
Java الدالة useDelimiter(String pattern)
تعريفها
تستخدم لجعل حرف أو كلمة أو جملة تبدو كمسافة فارغة في كائن الـ Scanner
.
ملاحظة: الحرف أو الكلمة أو الجملة التي يتم جعلها تبدو كمسافة فارغة, ستظهر هكذا فقط أمام دوال التشييك الموجودة في الكلاس Scanner
.
بناؤها
public Scanner useDelimiter(String pattern)
باراميترات
pattern
: هو كائن نوعه String
يمثل النص الذي سيتم إعتباره مسافة فارغة في كائن الـ Scanner
.
قيمة الإرجاع
ترجع النص الذي يتطابق مع الـ Pattern كمسافة فارغة في كائن الـ Scanner
.
في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner
.
بعدها قمنا باستخدام الدالة useDelimiter()
لتحويل كل كلمة 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  101, then  102, then  103 etc..
Java الدالة useLocale(Locale locale)
تعريفها
تستخدم لتحديد الترميز الذي سيستخدمه كائن الـ Scanner
عند قراءة و تخزين البيانات.
بناؤها
public Scanner useLocale(Locale locale)
باراميترات
locale
: هو كائن نوعه Locale
يحدد الترميز الذي سيستخدمه كائن الـ Scanner
.
قيمة الإرجاع
ترجع النص الموجود في كائن الـ Scanner
بالترميز الذي تم تحديده.
في المثال التالي أدخلنا سطر من البيانات في كونستركتور كائن الـ Scanner
.
بعدها قمنا باستخدام الدالة useLocale()
لتغيير نوع الترميز حتى يناسب اللغة الفرنسية.
مثال
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.
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