شارك المقالة

قائمة خيارات Java باستخدام switch وScanner هي طريقة عملية للتدرب على استقبال مدخلات المستخدم واختيار استجابة مناسبة. في هذا الدرس نبني برنامجًا نصيًا صغيرًا يعرض قائمة من ثلاثة خيارات، يقرأ رقمًا من لوحة المفاتيح، ثم يطبع رسالة توضيحية. المثال تعليمي بحت ولا يستطيع تحديد الإصابة بفيروس كورونا أو إثبات المناعة أو حالة التطعيم، ولا يُستخدم لاتخاذ قرار صحي.

ما الذي سيتعلمه المثال؟

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

كود Java كامل لقائمة الخيارات

import java.util.Scanner;

public class VaccineMenu {
    public static void main(String[] args) {
        try (Scanner input = new Scanner(System.in)) {
            System.out.println("اختر حالة تجريبية:");
            System.out.println("1 - الخيار الأول (مثال تعليمي)");
            System.out.println("2 - الخيار الثاني (مثال تعليمي)");
            System.out.println("3 - لا يوجد اختيار مسجل (مثال تعليمي)");
            System.out.print("رقم الاختيار: ");

            if (!input.hasNextInt()) {
                System.out.println("الرجاء إدخال رقم صحيح.");
                return;
            }

            int choice = input.nextInt();
            switch (choice) {
                case 1:
                    System.out.println("اخترت الحالة التجريبية الأولى.");
                    break;
                case 2:
                    System.out.println("اخترت الحالة التجريبية الثانية.");
                    break;
                case 3:
                    System.out.println("لم يتم تسجيل اختيار في هذا المثال.");
                    break;
                default:
                    System.out.println("خيار غير موجود؛ اختر رقمًا من 1 إلى 3.");
            }
        }
    }
}

شرح Scanner و switch

يقرأ Scanner البيانات من لوحة المفاتيح. نتحقق أولًا من أن الإدخال عدد صحيح باستخدام hasNextInt() حتى لا يتعطل البرنامج إذا كتب المستخدم نصًا. بعد ذلك تخزن nextInt() القيمة في المتغير choice. تقارن بنية switch القيمة بالحالات المحددة، وتوقف break تنفيذ بقية الحالات بعد طباعة النتيجة. أما default فتعالج الأرقام خارج القائمة.

يوجد أيضًا try-with-resources حول Scanner؛ وهذا الأسلوب يغلق المورد تلقائيًا عند انتهاء البرنامج. في مثال صغير كهذا قد ترى أحيانًا إنشاء Scanner مباشرة، لكن إغلاقه بصورة منظمة يساعدك على تعلم إدارة الموارد. لا تغلق System.in إذا كان البرنامج سيحتاجه لاحقًا لقراءات أخرى.

طريقة التشغيل والتحقق

احفظ الملف باسم VaccineMenu.java، ثم شغّله من الطرفية بالأمرين javac VaccineMenu.java وjava VaccineMenu. جرّب إدخال 1 و2 و3، ثم جرّب رقمًا مثل 9 ونصًا مثل abc لملاحظة معالجة الخيار غير الصحيح. إذا كان مشروعك يستخدم حزمًا، أضف تعريف الحزمة في بداية الملف وشغّله من مجلد المشروع المناسب.

تأكد أن اسم الملف يطابق اسم الصنف العام حرفيًا، بما في ذلك الأحرف الكبيرة والصغيرة؛ لذلك يكون الاسم VaccineMenu.java. وإذا أظهر المترجم خطأ عن Scanner، فتأكد من وجود سطر الاستيراد في بداية الملف. أما إذا لم يظهر الخيار المتوقع، فتحقق من الرقم الذي أدخلته ومن وجود break داخل كل حالة.

أخطاء شائعة

  • نسيان import java.util.Scanner; يؤدي إلى تعذر العثور على Scanner.
  • نسيان break قد يجعل التنفيذ ينتقل إلى الحالة التالية.
  • يجب أن تتوافق الأحرف الكبيرة والصغيرة في اسم الصنف مع اسم الملف.
  • قراءة نص بدل رقم تتطلب تحققًا مسبقًا؛ لذلك يعالج المثال الإدخال غير الرقمي قبل استدعاء nextInt().
  • إغفال default يترك الأرقام غير المعرفة دون رسالة توضح سبب عدم ظهور نتيجة.

أفكار لتطوير البرنامج

يمكنك إضافة خيارات جديدة، أو تكرار عرض القائمة داخل حلقة حتى يختار المستخدم الخروج، أو نقل كل حالة إلى دالة مستقلة عندما يكبر البرنامج. وإذا أردت استقبال جملة نصية بدل رقم، استخدم nextLine() مع الانتباه إلى أثر الانتقال بين قراءة الأرقام والنصوص. لا تضف بيانات شخصية أو صحية حقيقية إلى مثال تدريبي.

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

تنبيه: لا تستنتج من هذا البرنامج أي حالة صحية. نتائج الفحوصات والقرارات الطبية تُؤخذ من الجهات الصحية المختصة والأدوات الطبية المعتمدة.

شاهد أيضًا
مقالات ذات صلة
🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع