GagorAcadmey

تعلم برمجة تطبيقات الاندرويد من الصفر حتي الاحتراف

آخر المواضيع

switch-statement


تعريف الجملة switch

switch نستخدمها إذا كنا نريد إختبار قيمة متغير معين مع لائحة من الإحتمالات نقوم نحن بوضعها, و إذا تساوت هذه القيمة مع أي إحتمال وضعناه ستتنفذ الأوامر التي وضعناها في هذا الإحتمال فقط.

كل إحتمال نضعه يسمى case.

أنواع المتغيرات التي يمكن إختبار قيمتها باستخدام هذه الجملة هي:
int - byte - short - char - String - enum.


طريقة تعريفها

يمكننا تعريفها بعدة أشكال, الشكل الأساسي هو التالي:

switch(expression) {
   case value1:
   //Statements1
   break;
   case value2:
   //Statements2
   break;
default: //Statements For default }

  1. switch تعني إختبر قيمة المتغير الموضوع بين قوسين.


  2. expression هنا يقصد بها المتغير الذي نريد إختبار قيمته.
    نوع المتغير الذي يسمح لنا بإختباره: int - byte - short - char - String - enum.


  3. case تعني حالة, value تعني قيمة, و Statements تعني أوامر.
    و يقصد من هذا كله, أنه في حال كانت قيمة الـ expression تساوي هذه القيمة سيقوم بتنفيذ الأوامر الموضوعة بعد النقطتين :.
    الآن بعد تنفيذ جميع الأوامر الموضوعة بعد النقطتين, يجب وضع break لكي يخرج من الجملة switch مباشرةً بدل أن ينتقل للـ case التالية الموجودة في الجملة switch.
    نستطيع وضع العدد الذي نريده من الـ case بداخل الجملة switch.
    إنتبه: الـ expression و الـ value يجب أن يكونا من نفس النوع.


  4. default تعني إفتراضياً و هي نفس فكرة الجملة else, و يمكننا أن لا نضعها أيضاً.
    هذه الجملة تنفذ فقط في حال لم تنفذ أي case موجودة في الجملة switch و لذلك نضعها بالآخر.



ملاحظة

لا حاجة لوضع break للحالة الأخيرة لأن البرنامج سيخرج من الجملة switch في جميع الأحوال.


ستفهم فكرة الجملة switch من خلال الأمثلة و سنريك كيف يمكنك أن تنفذ نفس الأوامر لأكثر من حالة, من خلال الأمثلة.


سنقوم باختبار قيمة المتغير x و الذي نوعه int.

سنضع عدة حالات و كل حالة تطبع شيء معين.

المثال الأول
public class Main {
 
    public static void main(String[] args) {
 
        int a;
        Scanner input = new Scanner(System.in);//إستدعاء كلاس الادخال
        a = input.nextInt();//أمر إدخال قيم جديدة بواسطة المستخدم
        //بفرض أن المستخدم قام بادخال الرقم 3
        switch( a ) {// a إختبر قيمة المتغير
 
            case 1:  // في حال كانت تساوي 1 سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("a is 1");
                break;
 
            case 2:  // في حال كانت تساوي 2 سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("a is 2");
                break;
 
            case 3:  // في حال كانت تساوي 3 سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("a is 3");
                break;
 
            default:  // في حال كانت لا تساوي أي قيمة من القيم الموضوعة سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("out of range");
 
        }
    }
}

سنحصل على النتيجة التالية عند التشغيل.

a is 3

سنقوم باختبار قيمة المتغير x و الذي نوعه int.

سنضع عدة حالات و كل حالة تطبع شيء معين.

المثال الثاني
public class Main {
 
    public static void main(String[] args) {
 
        int x;
        Scanner input = new Scanner(System.in);
        x = input.nextInt();
 //بفرض أن المستخدم قام بإدخال الرقم 10
        switch( x ) { // x إختبر قيمة المتغير
 
            case 1:   //في حال كانت تساوي 1 سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("sunday");
                break;
            case 2:   //في حال كانت تساوي 2 سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("monday");
                break;
            case 3:   //في حال كانت تساوي 3 سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("Tuerday");
                  break;
            case 4:   //في حالة كانت تساوي 4 سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("wednesday");
                break;
            case 5:   //في حالة كانت تساوي 5 سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("thursday");
                break;
            case 6:   //في حالة كانت تساوي 6 سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("fridaay");
   case 7:   //في حالة كانت تساوي 7 سيتم تنفذ أمر الطباعة الموضوع فيها
    System.out.println("saturday");
            default:  // في حال كانت لا تساوي أي قيمة من القيم الموضوعة سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("out of week");
 
        } 
    }
}

سنحصل على النتيجة التالية عند التشغيل.

out of week

وضع نفس الأوامر لأكثر من حالة

إذا أردت وضع نفس الأوامر لأكثر من حالة, عليك وضع الحالات تحت بعضها, ثم كتابة الأوامر, ثم وضع break.


سنقوم باختبار قيمة المتغير x و الذي نوعه int.

سنضع ثلاث حالات ينفذون نفس الأوامر.

Main.java
public class Main {
 
    public static void main(String[] args) {
 
        int x = 1;
 
        switch( x ) {   // x إختبر قيمة المتغير
 
            case 1:     // في حال كانت تساوي 1 أو 2 أو 3 سيتم تنفيذ أمر الطباعة
            case 2:
            case 3:
                System.out.println("x is equal 1 or 2 or 3");
                break;
 
            default:   // في حال كانت لا تساوي أي قيمة من القيم الموضوعة سيتم تنفيذ أمر الطباعة الموضوع فيها
                System.out.println("different value");
 
        }
    }
}

سنحصل على النتيجة التالية عند التشغيل.

x is equal 1 or 2 or 3

وضع عبارات شرطية داخل جمل Switch ..!

يمكن وضع عبارات ( if) الشرطية بمختلف أنواعھا داخل كل case حالھا كحال إي كود برمجي أخر على سبيل المثال: برنامج تدخل رقم من شاشة التنفيذ ثم يطلب من المستخدم إدخال رقم العملية التي يريد أن يؤديھا على ھذه الرقم إذا ادخل المستخدم رقم واحد سوف يبين له ھل الرقم فردي أم زوجي وإذا ادخل رقم اثنان يبين له ھل الرقم اكبر من صفر أو اصغر منه
Main.java
public class Main {

    public static void main(String[] abc) {
        int Number, Chose_check;
        Scanner input = new Scanner(System.in);
        System.out.println("enter your number: ");
        Number = input.nextInt();//بفرض أن المستخدم قام بإدخال الرقم100
        System.out.println("enter Your Selected check (1) or (2):");
        Chose_check = input.nextInt();//وهنا أدخل المستخدم الرقم 1
        switch (Chose_check) {
            case 1: {
                if (Number % 2 == 0)
                    System.out.println("the number is even");
                else
                    System.out.println("the number is odd");
            }
            break;
            case 2: {
                if (Number > 0)
                    System.out.println("the number is more than zero");
                else
                    System.out.println("the number is less than zero");
            }
            break;
            default:
                System.out.println("Error Choice");
        }
    }
}

سنحصل على النتيجة التالية عند التشغيل.

enter your number: 
100
enter Your Selected check (1) or (2):
1
the number is even //هنا طبع أن الرقم المدخل رقم زوجي كما هو معروف

جرب إدخال قيم جديدة وشاهد النتيجة

ليست هناك تعليقات:

إرسال تعليق

ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.

صفحتنا علي الفيسبوك

التسميات

المتواجدين حاليا