English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدرس، سنتعلم عن Scanner في Java باستخدام أمثلة.
يمكن استخدام فئة PrintWriter في مكتبة java.io لتحرير بيانات الإدخال بشكل قابل للقراءة عادة (نصي).
يُستخدم فئة Scanner في مكتبة java.util لقراءة بيانات الإدخال من مصادر مختلفة (مثل تدفقات الإدخال، المستخدمين، الملفات إلخ). دعونا نأخذ مثالاً.
import java.util.Scanner; class Main { public static void main(String[] args) { // إنشاء عميل Scanner Scanner input = new Scanner(System.in); System.out.print("إدخل الاسم: "); // استقبال إدخال من لوحة المفاتيح String name = input.nextLine(); // طباعة الاسم System.out.println("اسمي هو " + name); // يغلق المسح input.close(); } }
نتائج الإخراج
إدخل الاسم: Jack اسمي هو Jack
انتبه إلى الخطوات التالية في المثال السابق
Scanner input = new Scanner(System.in);
في هذا المكان، قمنا بإنشاء عميل Scanner يُدعى input.
يستخدم معامل System.in للحصول على الإدخال من الإدخال القياسي. كما يتم الحصول على إدخال من لوحة المفاتيح.
ثم نستخدم طريقة nextLine() من فئة Scanner لقراءة سطر نصي من المستخدم.
الآن لديك بعض الفهم عن Scanner، دعنا نكتشفه أكثر.
من خلال المثال السابق، يمكننا رؤية أننا نحتاج أولاً إلى استيراد مكتبة java.util.Scanner ثم استخدام فئة Scanner.
import java.util.Scanner;
كما ذكرت سابقًا، بعد استيراد المكتبة، يمكنك إنشاء عميل Scanner.
// من خلال تدفق الإدخال قراءة الإدخال Scanner sc1 = new Scanner(InputStream input); // من خلال الملف قراءة الإدخال Scanner sc2 = new Scanner(File file); // من خلال السلسلة قراءة الإدخال Scanner sc3 = new Scanner(String str);
في هذا المكان، أنشأنا جسم Scanner، التي ستقرأ إدخالات منInputStream،قراءة إدخال من ملفات و نصوص.
يقدم جسم Scanner عدة طرق، مما يتيح لنا قراءة أنواع مختلفة من المدخلات.
طريقة | وصف |
---|---|
nextInt() | قراءة قيمة int من المستخدم |
nextFloat() | قراءة قيمة float من المستخدم |
nextBoolean() | قراءة قيمة boolean من المستخدم |
nextLine() | قراءة سطر من المستخدم |
next() | قراءة كلمة من المستخدم |
nextByte() | قراءة قيمة byte من المستخدم |
nextDouble() | قراءة قيمة double من المستخدم |
nextShort() | قراءة قيمة short من المستخدم |
nextLong() | قراءة قيمة long من المستخدم |
import java.util.Scanner; class Main { public static void main(String[] args) { //إنشاء جسم محلل Scanner input = new Scanner(System.in); System.out.println("إدخال عدد صحيح: "); //قراءة قيمة int int data1 = input.nextInt(); System.out.println("استخدام nextInt(): " + data1); input.close(); } }
نتائج الإخراج
إدخال عدد صحيح: 22 استخدام nextInt(): 22
في المثال السابق، استخدمنا طريقة nextInt() لقراءة القيمة الصحيحة.
import java.util.Scanner; class Main { public static void main(String[] args) { //إنشاء جهاز مسح جديد Scanner input = new Scanner(System.in); System.out.print("إدخال القيمة العائمة الثنائية: "); //قراءة القيمة العائمة الثنائية double value = input.nextDouble(); System.out.println("استخدام nextDouble(): " + value); input.close(); } }
نتائج الإخراج
إدخال القيمة العائمة الثنائية: 33.33 استخدام nextDouble(): 33.33
في المثال السابق، استخدمنا طريقة nextDouble() لقراءة القيمة العائمة.
import java.util.Scanner; class Main { public static void main(String[] args) { //إنشاء جهاز مسح جديد Scanner input = new Scanner(System.in); System.out.print("أدخل اسمك: "); //قراءة الكلمة بأكملها String value = input.next(); System.out.println("استخدام next(): " + value); input.close(); } }
نتائج الإخراج
أدخل اسمك: Jonny Walker استخدام next(): Jonny
في المثال السابق، استخدمنا طريقة next() لقراءة النص من المستخدم.
في هذا المكان، نقدم الاسم الكامل. ولكن، طريقة next() تقرأ الاسم فقط.
هذا لأن طريقة next() تقرأ المدخلالفراغحرف. عند مواجهة الفراغ، يعود بتعريف النص (باستثناء الفراغات).
import java.util.Scanner; class Main { public static void main(String[] args) { //إنشاء جهاز مسح جديد Scanner input = new Scanner(System.in); System.out.print("أدخل اسمك: "); //قراءة سطر كامل String value = input.nextLine(); System.out.println("استخدام nextLine(): " + value); input.close(); } }
نتائج الإخراج
أدخل اسمك: Jonny Walker استخدام nextLine(): Jonny Walker
في المثال الأول، استخدمنا طريقة nextLine() لقراءة سطر من المستخدم.
مختلف عن next()، يقرأ nextLine() كامل سطر الإدخال بما في ذلك الفراغات. ينتهي هذا الطريقة عند مواجهة سطر جديد \n.
يمكن استخدام برنامج مسح Java أيضًا لقراءة الأعداد الكبيرة والأعداد العكسية العشرية.
nextBigInteger() - قراءة قيمة عدد كبير من المستخدم
nextBigDecimal() - قراءة قيمة عكسي عشري من المستخدم
import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; class Main { public static void main(String[] args) { //إنشاء جهاز مسح جديد Scanner input = new Scanner(System.in); System.out.print("أدخل عدد كبير عكسي: "); //قراءة العدد العكسي الكبير BigInteger value1 = input.nextBigInteger(); System.out.println("استخدام nextBigInteger(): " + value1); System.out.print("أدخل عدد عكسي عشري: "); //قراءة العدد العكسي العشري BigDecimal value2 = input.nextBigDecimal(); System.out.println("استخدام nextBigDecimal(): " + value2); input.close(); } }
نتائج الإخراج
إدخال عدد كبير: 987654321 استخدام nextBigInteger(): 987654321 إدخال دسمة عشرية: 9.55555 استخدام nextBigDecimal(): 9.55555
في المثال السابق، استخدمنا حزمة java.math.BigInteger وحزمة java.math.BigDecimal لقراءة BigInteger وBigDecimal.
يقرأ جهاز الفحص الكامل للسطر ويقسم هذا السطر إلى علامات. العلامات هي عناصر صغيرة ذات معنى للمبرمج. على سبيل المثال
افترض أن لدينا سطر إدخال:
He is 22
في هذه الحالة، سيقرأ جهاز الفحص الكامل للسطر ويقسم هذا السطر إلى رموز: “ He ”,“ is ” و “ 22 .” ثم، يقوم الجهاز المكتشف بمرور كل رمز، ويقوم بقراءة كل رمز باستخدام طريقة مختلفة.
الإشارةالفراغ المستخدم بشكل افتراضي لفصل العلامات.