عند البرمجة بلغة Java أو أي لغة أخرى ، ستحتاج على الأرجح إلى استخدام معلومات الإدخال من المستخدم. توفر Java العديد من الطرق المختلفة للحصول على معلومات المستخدم ، ولكن الطريقة الأكثر شيوعًا وربما الأسهل في التنفيذ هي استخدام كائن الماسح الضوئي.
خطوات
طريقة 1 من 2: مقاطع الفيديو
الخطوة 1. استيراد فئة الماسح
يمكنك إما اختيار استيراد ملف
java.util. Scanner
الطبقة أو الكل
java.util
صفقة. لاستيراد فئة أو حزمة ، أضف أحد الأسطر التالية إلى بداية التعليمات البرمجية الخاصة بك:
استيراد java.util. Scanner ؛ // سيؤدي هذا إلى استيراد فئة الماسح فقط. استيراد java.util. * ؛ // سيؤدي هذا إلى استيراد حزمة java.util بأكملها.
الخطوة 2. قم بتهيئة كائن ماسح ضوئي جديد عن طريق تمرير
System.in
تيار الإدخال إلى المنشئ.
System.in
هو دفق الإدخال القياسي المفتوح بالفعل وجاهزًا لتوفير بيانات الإدخال. عادةً ما يتوافق هذا التدفق مع إدخال لوحة المفاتيح.
الماسح userInputScanner = ماسح ضوئي جديد (System.in) ؛
الخطوة الثالثة: اقرأ أنواعًا مختلفة من بيانات الإدخال التي يُدخلها المستخدم
تدعم فئة Scanner الحصول على العناصر الأولية مثل int ، و byte ، و short ، و long بالإضافة إلى الحصول على سلاسل.
-
فيما يلي بعض الطرق المتوفرة من خلال فئة الماسح الضوئي:
-
اقرأ بايت -
nextByte ()
-
اقرأ باختصار -
nextShort ()
-
قراءة int -
nextInt ()
-
اقرأ وحيدا -
nextLong ()
-
قراءة تعويم -
nextFloat ()
-
قراءة مزدوجة -
التاليمزدوج ()
-
قراءة منطقية -
nextBoolean ()
-
اقرأ سطرًا كاملاً -
السطر التالي()
-
اقرأ كلمة -
التالي()
-
-
فيما يلي مثال لبرنامج يستخدم طرقًا مختلفة لفئة Scanner للحصول على أنواع مختلفة من المدخلات:
استيراد java.util. Scanner ؛ فئة عامة ScannerExample {public static void main (String args) {// Initiate a new Scanner Scanner userInputScanner = new Scanner (System.in)؛ // اختبار nextLine () ؛ System.out.println ("\ n ما اسمك؟")؛ اسم السلسلة = userInputScanner.nextLine () ، // اختبار nextInt () ؛ System.out.print ("كم عدد القطط لديك؟")؛ int numberOfCats = userInputScanner.nextInt () ، // اختبار nextDouble () ؛ System.out.print ("كم من المال في محفظتك؟ $")؛ double moneyInWallet = userInputScanner.nextDouble () ، System.out.println ("\ n مرحبًا" + name + "! لديك" + numberOfCats + (numberOfCats> 1؟ "cats": "cat") + "و $" + moneyInWallet + "في محفظتك. / n") ؛ }}
الطريقة 2 من 2: معالجة الاستثناءات
الخطوة 1. التعامل مع استثناءات الإدخال
ان
InputMismatchException
يتم طرحها عند قيام المستخدم بإدخال بيانات لا تتطابق مع النوع المطلوب. على سبيل المثال ، إذا قام المستخدم بإدخال سلسلة عند طلب int ، فسيقوم البرنامج برمي
InputMismatchException
والخروج. هناك عدة طرق للتعامل مع هذا الاستثناء وحل هذه المشكلة بحيث يكون برنامجك مضمونًا.
الخطوة 2. استخدم كتلة try-catch للتعامل مع ملف
InputMismatchException
.
استيراد java.util. InputMismatchException ؛ استيراد java.util. Scanner ؛ فئة عامة ScannerExample {public static void main (String args) {// Initiate a new Scanner Scanner userInputScanner = new Scanner (System.in)؛ // اختبار nextLine () ؛ System.out.print ("\ n ما اسمك؟")؛ اسم السلسلة = userInputScanner.nextLine () ، // اختبار nextInt () ؛ منطقية صالحة الإدخال = خطأ ؛ عدد int numberOfCats = 0 ؛ while (! validInput) {System.out.print ("كم عدد القطط لديك؟") ؛ جرب {numberOfCats = userInputScanner.nextInt () ، المدخلات الصالحة = صحيح ؛ } catch (InputMismatchException e) {validInput = false؛ userInputScanner.nextLine () ، }} // Testing nextDouble ()؛ المدخلات الصالحة = خطأ ؛ ضعف moneyInWallet = 0.0 ؛ while (! validInput) {System.out.print ("كم من المال في محفظتك؟ $")؛ جرب {moneyInWallet = userInputScanner.nextDouble () ؛ userInputScanner.nextLine () ، المدخلات الصالحة = صحيح ؛ } catch (InputMismatchException e) {validInput = false؛ userInputScanner.nextLine () ، }} System.out.println ("\ n مرحبًا" + name + "! لديك" + numberOfCats + (numberOfCats> 1؟ "cats": "cat") + "و $" + moneyInWallet + "في محفظتك. / ن")؛ }}
لاحظ أنه يتعين علينا الاستيراد
java.util. InputMismatchException
من أجل استخدام
InputMismatchException
مضيفا
userInputScanner.nextLine () ،
الخطوة 3. بدلاً من ذلك ، اجعل إدخال المستخدم مضمونًا من خلال أخذ الأسطر التالية فقط من الماسح الضوئي
بهذه الطريقة ، يمكننا التأكد من أن كل شيء يعود الماسح إليه عبارة عن كائن سلسلة ولن يُنشئ أي استثناءات. بعد ذلك ، لتحويل السلاسل إلى أعداد صحيحة أو مضاعفة ، يمكننا استخدام صنفَي العدد الصحيح والمزدوج.
استيراد java.util. Scanner ؛ فئة عامة ScannerExample {public static void main (String args) {// Initiate a new Scanner Scanner userInputScanner = new Scanner (System.in)؛ // اختبار nextLine () ؛ System.out.print ("\ n ما اسمك؟")؛ اسم السلسلة = userInputScanner.nextLine () ، // اختبار nextInt () ؛ منطقية صالحة الإدخال = خطأ ؛ عدد int numberOfCats = 0 ؛ while (! validInput) {System.out.print ("كم عدد القطط لديك؟") ؛ إدخال سلسلة = userInputScanner.nextLine () ، جرب {numberOfCats = Integer.parseInt (إدخال) ، المدخلات الصالحة = صحيح ؛ } catch (NumberFormatException e) {validInput = false؛ }} // Testing nextDouble ()؛ المدخلات الصالحة = خطأ ؛ ضعف moneyInWallet = 0.0 ؛ while (! validInput) {System.out.print ("كم من المال في محفظتك؟ $")؛ إدخال سلسلة = userInputScanner.nextLine () ، جرب {moneyInWallet = Double.parseDouble (input) ؛ المدخلات الصالحة = صحيح ؛ } catch (NumberFormatException e) {validInput = false؛ }} System.out.println ("\ n مرحبًا" + name + "! لديك" + numberOfCats + (numberOfCats> 1؟ "cats": "cat") + "و $" + moneyInWallet + "في محفظتك. / ن")؛ }}
لاحظ أنه هنا لم يكن علينا استيراد ملف
NumberFormatException
كما أننا لم نضطر إلى مسح استخدام المخزن المؤقت
userInputScanner.nextLine () ،
نصائح
- راجع Scanner API للحصول على مزيد من المعلومات حول استخدام فئة Scanner.
- استخدم دومًا.next () بدلاً من.nextLine () لقراءة الكلمة التالية ، لأن.nextLine () يمكن أن يكون عربات التي تجرها الدواب.