Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

Javaالجملة switch في جافا

  • تعريف الجملة switch
  • وضع نفس الأوامر لأكثر من حالة

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

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

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

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


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

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

switch(expression) {

    case value:
        // Statements
        break;

    case value:
        // Statements
        break;

    default:
        // Statements
        break;

}

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

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

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

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


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


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


المثال الأول

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

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

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

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

x contain 2
x contain 2

نلاحظ أنه تم تنفيذ أمر الطباعة الموجود في الحالة الثانية لأن قيمة المتغير x تساوي 2.

هنا سأل نفسه التالي: هل قيمة المتغير x تساوي 1؟
فكان جواب الشرط كلا ( أي false ), فانتقل إلى الحالة التي تليه.

ثم سأل نفسه التالي: هل قيمة المتغير x تساوي 2؟
فكان جواب الشرط نعم ( أي true ), فقام بتنفيذ أمر الطباعة الموجود في هذه الحالة, و بعدها خرج من الجملة switch بأكملها بسبب الجملة break.



المثال الثاني

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

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

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

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

x contain a different value
x contain a different value

نلاحظ أن تم تنفيذ أمر الطباعة الموجود في الحالة الإفتراضية لأن قيمة المتغير x لا تساوي أي قيمة من القيم الموضوعة في الحالات.

هنا سأل نفسه التالي: هل قيمة المتغير x تساوي 1؟
فكان جواب الشرط كلا ( false ), فانتقل إلى الحالة التي تليه.

ثم سأل نفسه التالي: هل قيمة المتغير x تساوي 2؟
فكان جواب الشرط كلا ( false ), فانتقل إلى الحالة التي تليه.

ثم سأل نفسه التالي: هل قيمة المتغير x تساوي 3؟
فكان جواب الشرط كلا ( false ), فانتقل إلى الحالة التي تليه.

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

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

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


مثال

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

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

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

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

x contain 1 or 2 or 3
x contain 1 or 2 or 3

نلاحظ أنه تم تنفيذ أمر الطباعة الموضوع للحالات الثلاث الأولى لأن قيمة x تساوي 3.

هنا سأل نفسه التالي: هل قيمة المتغير x تساوي 1 أو 2 أو 3؟
فكان جواب الشرط نعم ( true ), فقام بتنفيذ أمر الطباعة الموضوع لهذه الحالات الثلاث, و بعدها خرج من الجملة switch بأكملها بسبب الجملة break.