كيفية استخدام الماسح الضوئي في Java

How Use Scanner Java



الماسح في Java عبارة عن فئة في حزمة java.util. تهدف هذه الفئة إلى قراءة المدخلات من سلسلة أو لوحة مفاتيح أو ملف أو مقبس شبكة. تركز هذه المقالة فقط على قراءة المدخلات من لوحة المفاتيح وعرض النتيجة في نافذة المحطة الطرفية. يمكن استخدام أفكار مماثلة لقراءة المدخلات من الملف أو قناة الشبكة. الماسح الضوئي لا يطبع في النافذة الطرفية. للطباعة على الجهاز ، استخدم كائن System.out. من السهل استخدام هذا الكائن للطباعة على الجهاز ، كما هو موضح أدناه.

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







محتوى المادة



الاستخدام البسيط لفئة الماسح الضوئي

يطلب الكود التالي من المستخدم كتابة جملة ، ثم يعرض الجملة:



يستورد java.util.Scanner؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛
نظام .خارج.println('اكتب جملة واضغط على Enter:')؛

سلسلة جملة او حكم على=مسح ضوئي.السطر التالي()؛
نظام .خارج.println(جملة او حكم على)؛

مسح ضوئي.أغلق()؛
}
}

يستورد السطر الأول فئة الماسح الضوئي. في الوظيفة الرئيسية ، يقوم السطر الأول بإنشاء كائن ماسح ضوئي باستخدام كائن System.in للوحة المفاتيح. بمجرد إنشاء كائن الماسح الضوئي ، يبدأ في انتظار الإدخال. السطر التالي يطبع بيانًا ، ويطلب من المستخدم كتابة جملة. يستخدم السطر التالي في الكود طريقة nextLine () لكائن الماسح لقراءة جملة المستخدم بعد أن يضغط على Enter. السطر التالي ، في الكود ، يعيد طباعة الجملة في النافذة الطرفية. يقوم السطر الأخير بإغلاق كائن الماسح الضوئي.





بصق إدخال خط في القيم

الكود التالي يقسم سطر الإدخال إلى كلمات (الرموز) ، باستخدام المسافة كمحدد:

يستورد java.util.Scanner؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛
نظام .خارج.println('اكتب سطرًا من الرموز المميزة ، واضغط على Enter:')؛

في حين(مسح ضوئي.hasNext()){
نظام .خارج.println(مسح ضوئي.التالي())؛
}

مسح ضوئي.أغلق()؛
}
}

hasNext () و next () طريقتان أخريان لكائن الماسح الضوئي. عندما يقرأ كائن الماسح الضوئي سطرًا ، فإنه يحتفظ به. next () يصل إلى الرمز المميز التالي (الكلمة). hasNext () يعود صحيحًا إذا كان هناك أي رمز آخر لم يتم الوصول إليه بعد.



لسوء الحظ ، لا يزال من المتوقع أن يكتب المستخدم الإدخال للتقسيم وإعادة العرض باستخدام هذا الرمز. لإنهاء كل ذلك ، اضغط على Ctrl + z ، ويجب أن تعود إلى موجه الأوامر.

في الكود أعلاه ، يفصل المحدد الرموز المميزة في الفراغ. يمكن استخدام شخصية أخرى. يستخدم الكود التالي الفاصلة. لا تنس الضغط على Ctrl + z لإنهاء الحلقة إذا قمت باختبار الكود.

يستورد java.util.Scanner؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛
نظام .خارج.println('اكتب سطرًا من الرموز المميزة ، واضغط على Enter:')؛

مسح ضوئي.استخدم محدد('،')؛

في حين(مسح ضوئي.hasNext()){
نظام .خارج.println(مسح ضوئي.التالي())؛
}

مسح ضوئي.أغلق()؛
}
}

إذا قمت باختبار الكود ، فستلاحظ أنه تم تضمين المسافات في الرموز كجزء من الرموز المميزة (الإخراج). التعبير scanObj.useDelimiter (،) ؛ تمت كتابته بعد قراءة سطر الإدخال ؛ هذا ما يجعل الفاصلة ، المحدد.

قراءة والتحقق من صحة أنواع البيانات البدائية

nextBoolean () طريقة

في الكود التالي ، من المتوقع أن يكتب المستخدم إما صواب أو خطأ بدون علامات الاقتباس ثم الضغط على مفتاح Enter إذا كتب المستخدم أي شيء آخر ، مثل نعم أو لا ، سيتم عرض رسالة خطأ.

يستورد java.util.Scanner؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
نظام .خارج.مطبعة(هل أنت فوق 24؟ ')؛
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛

قيمة منطقيةbl=مسح ضوئي.التالي منطقي()؛
لو (bl== حقيقية) {
نظام .خارج.println('عمرك أكبر من 24')؛
}
آخر لو (bl== خاطئة) {
نظام .خارج.println('أنت أقل من 24')؛
}

مسح ضوئي.أغلق()؛
}
}

نظرًا لأن java ستصدر رسالة خطأ طالما أن الإدخال ليس صحيحًا أو خاطئًا تمامًا ، فإن else if قد تم استخدامه بدلاً من else.

الفرق بين الطرق ، print و println ، هو أن print تتوقع الإدخال في السطر الحالي ، بينما تتوقع println الإدخال في السطر التالي.

طريقة nextByte ()

مع مجموعة أحرف ASCII ، يكون الحرف بايت واحد. ومع ذلك ، مع بعض مجموعات الأحرف الشرقية ، قد يتكون الحرف من أكثر من بايت واحد. بصرف النظر عن مجموعة الأحرف ، يقوم أسلوب nextByte بقراءة البايت التالي من الإدخال والتحقق منه. يمكن استخدام الكود التالي لهذا الغرض:

يستورد java.util.Scanner؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
نظام .خارج.مطبعة('نوع الرقم<128, press Enter: ')؛
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛

بايتBT=مسح ضوئي.التالي()؛
نظام .خارج.println(BT)؛

مسح ضوئي.أغلق()؛
}
}

إذا تم إدخال رقم أكبر من 127 أو حرف أبجدي لهذا الرمز ، فسيتم إصدار رسالة خطأ.

nextInt () الطريقة

يمكن أيضًا التحقق من صحة الرمز الصحيح التالي كمدخل وقبوله. يمكن استخدام الكود التالي:

يستورد java.util.Scanner؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
نظام .خارج.مطبعة('أدخل أي عدد صحيح:')؛
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛

intعلى واحد=مسح ضوئي.التالي()؛
نظام .خارج.println(على واحد)؛

مسح ضوئي.أغلق()؛
}
}

تمت إزالة المسافات البادئة أو اللاحقة. بالنسبة لهذا الرمز ، سيتم قبول أي قيمة عدد صحيح ، بما في ذلك القيم الأكبر من 127. باستخدام طرق XXX () التالية ، بمجرد فشل التحقق من الصحة ، يتم إصدار رسالة خطأ.

nextBigInteger () طريقة

يبدو أن مهندسي البرمجيات لن يتوقفوا أبدًا عن ابتكار أشياء جديدة. العدد الصحيح الكبير هو عدد صحيح قيمته أكبر بكثير من قيمة عدد صحيح. ومع ذلك ، باستخدام Java ، يمكن قراءته بنفس طريقة قراءة العدد الصحيح. يوضح الكود التالي هذا:

يستورد java.util.Scanner؛
يستورد java.math.BigInteger؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
نظام .خارج.println('أدخل أي عدد صحيح للعدد الصحيح الكبير:')؛
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛

BigInteger على واحد=مسح ضوئي.nextBigInteger()؛
نظام .خارج.println(على واحد)؛

مسح ضوئي.أغلق()؛
}
}

لاحظ بيان الاستيراد ، استيراد java.math.BigInteger ؛. لاحظ أيضًا أن نوع العدد الصحيح الكبير يبدأ بحرف كبير B وليس حرف b صغير.

nextFloat () طريقة

يمكن أيضًا التحقق من صحة رمز التعويم التالي وقبوله. يمكن استخدام الكود التالي:

يستورد java.util.Scanner؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
نظام .خارج.مطبعة('أدخل أي تعويم:')؛
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛

تطفوعلى واحد=مسح ضوئي.التالي()؛
نظام .خارج.println(على واحد)؛

مسح ضوئي.أغلق()؛
}
}

مثال على الرقم العائم هو 23.456. تمت إزالة المسافات البادئة أو اللاحقة.

التاليمزدوج ()

يمكن أيضًا التحقق من الرمز المزدوج التالي كمدخل وقبوله. يمكن استخدام الكود التالي:

يستورد java.util.Scanner؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
نظام .خارج.مطبعة('أدخل أي مزدوج:')؛
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛

مزدوجعلى واحد=مسح ضوئي.التالي()؛
نظام .خارج.println(على واحد)؛

مسح ضوئي.أغلق()؛
}
}

مثال على رقم مزدوج هو 23.456. الرقم المزدوج يختلف عن عدد عشري لأنه يحتوي على هامش خطأ أقل. تمت إزالة المسافات البادئة أو اللاحقة.

طريقة nextLine ()

طريقة nextLine () هي سلسلة نصية. إذا كانت السلسلة هي سطر الإدخال من لوحة المفاتيح بعد الضغط على Enter ، فيمكن أن تحتوي على حرف السطر الجديد ، ' n'. يمكن استخدام الكود التالي:

يستورد java.util.Scanner؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
نظام .خارج.println(أدخل سطرًا به\ن : ')؛
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛

سلسلة ص=مسح ضوئي.السطر التالي()؛
نظام .خارج.println(ص)؛

مسح ضوئي.أغلق()؛
}
}

لاحظ أن نوع السلسلة يبدأ بالحرف S الكبير وليس بالحرف الصغير s.

تم استخدام طرق nextLine () و hasNext () و next () سابقًا في هذه المقالة. الماسح الضوئي لديه طرق أخرى وطرق بيانات بدائية أخرى - انظر لاحقًا.

تعيين مدخلات لمتغير

يمكن تخصيص المدخلات لمتغير ، كما يوضح الكود التالي:

يستورد java.util.Scanner؛

عام صف دراسيذا كلاس{
عام ثابتة فارغالأساسية( سلسلة []أرجس) {
ماسح ضوئي= الجديدالماسح الضوئي( نظام .في)؛

نظام .خارج.مطبعة('أدخل الاسم: ')؛
سلسلة اسم=مسح ضوئي.السطر التالي()؛

نظام .خارج.مطبعة('أدخل العمر:')؛
intسن=مسح ضوئي.التالي()؛

نظام .خارج.مطبعة('أدخل الراتب:')؛
مزدوجراتب=مسح ضوئي.التالي()؛

نظام .خارج.println('اسم: ' +اسم+ '، سن: ' +سن+ '، مرتب: ' +راتب)؛

مسح ضوئي.أغلق()؛
}
}

استنتاج

الماسح في Java عبارة عن فئة في حزمة java.util. تهدف هذه الفئة إلى قراءة المدخلات من سلسلة أو لوحة مفاتيح أو ملف أو مقبس شبكة. ركزت هذه المقالة بشكل أساسي على قراءة المدخلات من لوحة المفاتيح وعرض النتيجة في نافذة المحطة الطرفية. يمكن استخدام أفكار مماثلة لقراءة المدخلات من السلسلة أو الملف أو قناة الشبكة.

لقراءة سطر إدخال لوحة المفاتيح بالكامل ، استخدم طريقة nextLine (). يمكن تقسيم السطر كسلسلة إلى رموز مميزة ، باستخدام أساليب hasNext () والتالية () ، وحلقة while. المحدد الافتراضي للتقسيم هو المساحة ، لكن يمكن للمبرمج اختيار محدد آخر. لا تنس أن تفعل Ctrl + z لإيقاف حلقة while ، إذا لزم الأمر. يمكن إزالة المسافات البادئة والزائدة باستخدام أنظمة أخرى لم يتم تناولها في هذه المقالة. يمكن أيضًا التحقق من صحة الرموز المميزة باستخدام أنظمة أخرى لم يتم تناولها في هذه المقالة.

يمكن قراءة القيم الأولية باستخدام nextBoolean () ، nextByte () ، nextInt () ، وما إلى ذلك. تقوم طرق nextXXX () بالتحقق من الصحة ، كما تزيل المسافات البادئة والزائدة.

يحتوي Java Scanner على العديد من الطرق. ومع ذلك ، تم شرح الاستخدام الأساسي للماسح في هذه المقالة. يتم اختيار الرمز المميز في الواقع باستخدام تقنيات التعبير العادي. استخدام تقنيات التعبير العادي هو مناقشة لبعض الوقت.