اليوم رح نبني أبليكيشن بسيطة، وهي عبارة عن حاسبة باستخدام الكونسبتات اللي تعلمناها بالدروس الماضية.
الفكرة إنه في يوزر يكتب input، والكود يحلل هذا الـ input ويعطيه نتيجة نهائية.
الشيء اللي ما تعلمناه بالدروس الماضية هو كيف ناخذ input من اليوزر.
لهذا الغرض منستخدم شيء اسمه Scanner.
الـ Scanner جاي من باكيج java.util، وبنعمله instantiate هيك:
Scanner scanner = new Scanner(System.in);
الـ System.in هو اللي بيأخذ الـ input من اليوزر.
بعد ما ساوينا الـ Scanner، فينا نستخدم:
nextInt() لقراءة عدد صحيحnextDouble() لقراءة عدد عشريnextFloat() لقراءة floatnext() لقراءة نصمثلاً لقراءة رقم من اليوزر:
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter a number:");
int value = scanner.nextInt();
System.out.println("The number is: " + value);
لو عملنا run وكتبنا 123، رح يطبع:
اشترك في النشرة البريدية
دروس جديدة، مقالات، وأدوات مباشرة لبريدك.
أول شيء بالحاسبة هو إننا نعطي اليوزر تعليمات واضحة، فنعمل print للخيارات المتاحة:
System.out.println("Select an operation:");
System.out.println("1. Addition");
System.out.println("2. Subtraction");
System.out.println("3. Multiplication");
System.out.println("4. Division");
System.out.println("5. Exit");الخيارات هي:
| الرقم | العملية |
|---|---|
| 1 | جمع - Addition |
| 2 | طرح - Subtraction |
| 3 | ضرب - Multiplication |
| 4 | قسمة - Division |
| 5 | خروج - Exit |
بعد ما نعرض التعليمات، ناخذ خيار اليوزر ونحفظه بـ variable اسمه choice.
مهم: استخدموا أسماء variables معبّرة عن القيمة اللي بتحفظوها.
int choice = scanner.nextInt();بعدين ناخذ الرقمين اللي رح نعمل عليهم العملية:
System.out.println("Enter the first number:");
int number1 = scanner.nextInt();
System.out.println("Enter the second number:");
int number2 = scanner.nextInt();تنبيه: كل مرة بتكونوا بتاخذوا input من اليوزر لازم تستخدموا scanner.nextInt() أو غيرها حسب الـ type المتوقع.
بعد ما حصلنا على choice و number1 و number2، منستخدم switch لنحدد أي عملية ننفذ.
الـ switch هون أفضل من if/else لأننا عم نقارن قيمة واحدة مع حالات محددة.
switch (choice) {
case 1:
System.out.println("Result: " + (number1 + number2));
break;
case 2:
System.out.println("Result: " + (number1 - number2));
break;
case 3:
System.out.println("Result: " + (number1 * number2));
break;
case 4:
System.out.println("Result: " + (number1 / number2));
break;
default:
System.out.println("Invalid option.");
break;
}لاحظوا إننا حطينا أقواس حول العملية الحسابية زي (number1 + number2) لنضمن إنه الجمع يصير قبل الـ concatenation مع النص.
الـ break مهم بعد كل case لحتى يوقف التنفيذ ولا يكفي على الكيس التالي.
الـ default بينعمل run بحال ما انطبق أي كيس، يعني مثلاً لو اليوزر كتب رقم 20 وما عنا كيس له.
بالنهاية وبعد ما خلصنا كل الكود، الأفضل إنه نعمل:
scanner.close();هيك نتأكد إنه الـ Scanner تسكرت بشكل صحيح.
لو عملنا run وكتبنا 1 للـ addition، وبعدين 3 و 4، رح يطبع:
Select an operation:
1. Addition
...
Enter the first number:
3
Enter the second number:
4
Result: 7المشكلة الحالية إنه البرنامج بيشتغل مرة واحدة بس وبعدين بيوقف.
لحتى يضل البرنامج شغال ويسمح لليوزر يعمل أكثر من عملية، منستخدم while loop.
أول شي منعرف boolean variable اسمه keepRunning وقيمته الأساسية true:
boolean keepRunning = true;وبعدين منلف كل الكود جواد الـ while:
while (keepRunning) {
// كل كود الحاسبة هون
}المشكلة الحالية إنه keepRunning دايماً true ما في مكان بالبرنامج عم نحولها لـ false، وهذا غلط لأنه رح يضل البرنامج شغال للأبد.
الحل إننا نستخدم الـ case رقم 5 اللي هو exit:
case 5:
keepRunning = false;
break;مجرد ما اليوزر يكتب 5 رح نحول keepRunning لـ false، والـ break رح توقف الكيس.
بمجرد ما keepRunning تصير false، الـ while loop رح تتوقف ولا تعمل run من جديد.
Scanner scanner = new Scanner(System.in);
boolean keepRunning = true;
while (keepRunning) {
System.out.println("Select an operation:");
System.out.println("1. Addition");
System.out.println("2. Subtraction");
System.out.println("3. Multiplication");
System.out.println("4. Division");
System.out.println("5. Exit");
int choice = scanner.nextInt();
System.out.println("Enter the first number:");
int number1 = scanner.nextInt();
System.out.println("Enter the second number:");
int number2 = scanner.nextInt();
switch (choice) {
case 1:
System.out.println("Result: " + (number1 + number2));
break;
case 2:
System.out.println("Result: " + (number1 - number2));
break;
case 3:
System.out.println("Result: " + (number1 * number2));
break;
case 4:
System.out.println("Result: " + (number1 / number2));
break;
case 5:
keepRunning = false;
break;
default:
System.out.println("Invalid option.");
break;
}
}
scanner.close();نعمل run، نختار 4 للـ division، ونحط 10 و 2، فيعطينا:
Result: 5وبعدين يعود يعمل run من أول لأنه الـ loop دايماً شغالة، لحد ما نختار 5 للخروج.