جاري التحميل...

switch في Java

احتفظ بالعدد الصحيح 2 تحت الاسم choice. ابنِ switch يسرد case 1 و case 2 و case 3، لكلٍّ println خاص، مع default أيضًا. عندما تترجم وتشغّل، يجب أن تظهر الشاشة mid — سطرًا واحدًا — لأن case 2 يطابق. هذا ما تعلّمه هذه الصفحة: قيمة واحدة، عدة تسميات ثابتة، مسار واحد مختار.

قيمة واحدة، عدة تسميات ثابتة

أنشئ ملف برنامج صغير باسم Dial.java. يجب أن يطابق public class في السطر الأول اسم الملف: public class Dial. لا تُبقِ اسم فئة قديمًا مثل Gate أو Mint في هذا الملف؛ المترجم يتوقع أن يتوافق اسم الفئة مع اسم الملف.
داخل main، خزّن عددًا صحيحًا قبل switch:
int choice = 2;
هذا السطر لا يطبع شيئًا. هو فقط يعطي الاسم choice القيمة 2. choice يبدأ بحرف c صغير. لا علامتي اقتباس حول 2. الفاصلة المنقوطة تنهي سطر التخزين. بعد ذلك يأتي switch نفسه:
switch (choice) {
case 1:
System.out.println("low");
break;
case 2:
System.out.println("mid");
break;
case 3:
System.out.println("high");
break;
default:
System.out.println("none");
break;
}
كلمة switch بأحرف صغيرة. داخل القوسين يجلس الاسم choice — القيمة التي يقارنها Java مع كل تسمية case. كل سطر case ينتهي بنقطتين، لا بفاصلة منقوطة. تحت case 2 يجلس System.out.println("mid"); ثم كلمة break وفاصلة منقوطة. عندما يحمل choice القيمة 2، يدخل Java إلى case 2، يطبع mid، يصل إلى break، ويغادر switch بالكامل. case 3 و default لا يعملان في هذا التشغيل. احفظ الملف قبل الترجمة.

برنامج يطبع mid

هذه هي النسخة التي تترجمها أولًا. choice يساوي 2، إذن التسمية المطابقة هي case 2.

choice يساوي 2

java
public class Dial {
    public static void main(String[] args) {
        int choice = 2;
        switch (choice) {
            case 1:
                System.out.println("low");
                break;
            case 2:
                System.out.println("mid");
                break;
            case 3:
                System.out.println("high");
                break;
            default:
                System.out.println("none");
                break;
        }
    }
}

من المجلد الذي يحوي Dial.java اكتب javac Dial.java. عندما تتطابق الأقواس المجعدة والأقواس العادية والنقطتان، لا يكتب javac أي سطر من عنده. ثم اكتب java Dial — وليس java Dial.java. أزل لاحقة .java من الأمر الثاني. الأمران نفسهما يعملان على Windows وعلى macOS؛ هذه الصفحة لا تعتمد على إملاء صدفة مختلف لأي من النظامين. يجب أن يطبع البرنامج mid ويتوقف. لا يطلب منك الكتابة. إذا بقي الطرفية منتظرة إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين أقدم داخل الملف. احذف ذلك الاستدعاء وأبقِ int مع switch أعلاه. لا تحتاج تثبيت JDK جديد من أجل سطر شاشة خاطئ.

لماذا mid وليس low أو high؟ لأن القيمة داخل القوسين كانت 2، والتسمية المطابقة هي case 2. Java لا يطبع الرقم 2 في هذا التشغيل إلا إذا كتبت println لذلك الرقم. يطبع ما يشغّله println تحت الحالة المطابقة. الأقواس تحمل القيمة التي تُقارَن. كل تسمية case هنا عدد صحيح ثابت. break ينهي switch حتى تبقى الحالات التالية صامتة. default ينتظر قيمًا لا تطابق أي حالة — ويبقى بلا استخدام بينما choice يساوي 2.

عندما لا تطابق أي حالة

غيّر القيمة المخزّنة فقط:
int choice = 9;
اترك بنية switch كما هي. الآن لا يطابق أي من case 1 أو case 2 أو case 3. ينتقل Java إلى default ويشغّل System.out.println("none");. يجب أن تظهر الشاشة none، سطرًا واحدًا.

choice يساوي 9

java
public class Dial {
    public static void main(String[] args) {
        int choice = 9;
        switch (choice) {
            case 1:
                System.out.println("low");
                break;
            case 2:
                System.out.println("mid");
                break;
            case 3:
                System.out.println("high");
                break;
            default:
                System.out.println("none");
                break;
        }
    }
}

ترجم وشغّل مرة أخرى: javac Dial.java ثم java Dial. يجب أن ترى none. لم تعِد كتابة أسطر case — فقط القيمة تحت choice تغيّرت. بعد أن ترى none، يمكنك إعادة int choice = 2; للرجوع إلى العرض الأول. النسختان Java صحيحتان. تعلّمان نفس شكل switch بحالة مطابقة وبـ default.

اقرأ تشغيل default مرة أخرى بالترتيب. choice يحمل 9. يبدأ switch (choice). case 1 لا يطابق. case 2 لا يطابق. case 3 لا يطابق. يستمر التنفيذ عند default. ينفَّذ println("none"). سطر واحد على الشاشة. الرقم 9 نفسه لا يظهر إلا إذا طبعته عمدًا.

break يوقف الحالات التالية

break ليس زينة. بدونه، يمكن لـ Java أن يستمر في تشغيل أسطر الحالة التالية بعد مطابقة. هذا السقوط للأسفل يفاجئ المبتدئين. هنا عرض قصير ينسى break عمدًا بعد case 2 — جرّبه في ملف منفصل، أو اقرأه بدقة قبل أن تجعله ملفك الرئيسي:

بدون break بعد case 2

java
public class Dial {
    public static void main(String[] args) {
        int choice = 2;
        switch (choice) {
            case 1:
                System.out.println("low");
                break;
            case 2:
                System.out.println("mid");
            case 3:
                System.out.println("high");
                break;
            default:
                System.out.println("none");
                break;
        }
    }
}

مع choice يساوي 2 وبدون break تحت case 2، يمكن أن تظهر الشاشة mid في سطر و high في السطر التالي. طابقت case 2، طبعت mid، ثم سقطت إلى case 3 وطبعت high. عروض الدرس الأولى تبقي break تحت كل حالة حتى يكتب كل مسار سطرًا واحدًا بالضبط. أعد break قبل أن تعتبر Dial.java ملف الدرس المحفوظ مرة أخرى.

قواعد تُبقي التسميات واضحة

الأقواس حول القيمة التي يعمل عليها switch مطلوبة. كتابة switch choice { … } بلا أقواس تجعل javac يفشل. كل تسمية case في هذه الصفحة ثابت عدد صحيح: case 1: و case 2: و case 3:. نقطتان تتبعان التسمية. كتابة case 2; بفاصلة منقوطة بدل النقطتين ليست شكل هذا الدرس. default لا قيمة بعده — فقط default: ثم أسطر «لم يطابق شيء».

switch ليس نفس أداة if. if (ready) يسأل سؤال true أو false. switch (choice) يطابق قيمة واحدة مع قائمة تسميات ثابتة. لا تكتب switch (ready) مع boolean وتتوقع شكل درس Gate.java. أبقِ عروض هذه الصفحة على int باسم choice وتسميات case أعدادًا صحيحة. مقارنات مثل if (score > 10) ما زالت لـ if عندما تحتاج نطاقًا؛ يبرز switch عندما تكون القيم منفصلة ومعروفة مسبقًا.

خلط شائع هو طباعة النحو نفسه: System.out.println("switch (choice)");. ذلك يكتب الحروف switch (choice). لا يختار حالة. خلط آخر هو ترك عرض if / else من صفحة Gate داخل نفس main والتساؤل لماذا تظهر الشاشة pass بدل mid. يجب أن يحوي main هذه الجلسة الـ int و الـ switch فقط.

📊 قيمة choice والشاشة

choice الشاشة
1 low
2 mid
3 high
9 none

استخدم الجدول فحصًا بعد تشغيل، لا بدلًا منه. choice يساوي 2 مع العرض الأول يطبع mid. choice يساوي 9 مع العرض الثاني يطبع none. choice يساوي 1 يطبع low. choice يساوي 3 يطبع high. إذا ظهر mid و high معًا لـ choice يساوي 2، فـ break ناقص تحت case 2 — أصلح الـ break بدل إعادة تثبيت Java.

ماذا تستطيع أن تفعل الآن

يمكنك تخزين عدد صحيح، ووضعه داخل switch (…)، وإعطاء كل قيمة ثابتة case خاصًا مع println و break. عندما تطابق حالة، يعمل ذلك السطر؛ عندما لا يطابق شيء، يعمل default. الصفحة التالية هي for، حيث يمكن لنفس كتلة الأسطر أن تتكرر مرارًا بينما يتغيّر عدّاد.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
6
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى