Java Switch (Tanlash Operatori)

Java dasturlash tilida switch ifodasi ba'zi bir o'zgaruvchining qiymatiga qarab bajarish mumkin bo’lgan ifodalar to'plaminidan birini tanlash imkonini beradi. Switch kalit so’zi if kalit so’ziga biroz o'xshaydi, lekin switch ifodasining sintaksisi biroz murakkab va u boshqacharoq xarakterga va imkoniyatlarga ega.

Ushbu darsda biz switch kalit so’zi qanday ishlashi va qaydan holatlarda ishlatilishi bilan birga, Java 12 va Java 13 da qo'shilgan switch ifodalarining yangi sintaksisini o’rganamiz.

Quyidagi misolga e’tibor bering:

int miqdor = 9;

switch(miqdor) {
    case     0 : System.out.println("miqdor 0 ga teng"); break;
    case     5 : System.out.println("miqdor 5 ga teng"); break;
    case    10 : System.out.println("miqdor 10 ga teng"); break;
    default    : System.out.println("miqdor qaysidir songa teng");
}

Keling yuqoridagi misolni tushunishga harakat qilamiz. Dastlab miqdor nomli o’zgaruvchi e’lon qilib, unga 9 sonini beramiz. Keyin, miqdor o’zgaruvchisini turli qiymatlarga tekshiramiz. Switch ifodasida 3 ta case ifodalar va bitta default ifoda mavjud.

Har bir case ifoda o’zgaruvchi qiymatini bitta o’zgarmas bilan solishtiradi. Agar o’zgaruvchi qiymati biror o’zgarmasga teng bo’lsa, “:” dan keying kod bloki ishga tushadi. Break kalit so’ziga e’tibor bering. Agar break so’zi yozilmasa, kod boshda case ifodalarni tekshirishda davom etadi va switch oxirigacha yetib boradi. Break kalit so’zi esa switch ifodasining oxiriga sakraydi.

Default ifodasi agar barcha case ifodalaridagi shartlar qanoatlanmasa ishga tushadi. Yoki agar case ifodalarda break so’zi yozilmasa oxirida ishga tushadi. Default ifodasini yozish ixtiyoriy.

Yuqoridagi switch ifodasiga ekvivalent kodni if-else ifodasi orqali yozamiz.

int miqdor = 9;

if     (miqdor == 0) { System.out.println("miqdor 0 ga teng"); }
else if(miqdor == 5) { System.out.println("miqdor 5 ga teng"); }
else if(miqdor == 10){ System.out.println("miqdor 10 ga teng"); }
else                 { System.out.println("miqdor qaysidir songa teng"; }

Anglagingizdek, switch ifodasi orqali o’zgaruvchilar turli qiymatlarga tekshiriladi. Java 7 gacha switch ifodasi faqat son tipidagi o’zgaruvchilar bilan ishlay olardi, ya’ni byte, short, char, int. Java 7 dan boshlab String tipidagi qiymatlarni ham tekshirish imkoni paydo bo’ldi. Quyida, bir nechta tipdagi ma’lumotlar bilan misollar ko’rib chiqamiz:

byte haftaKuni = 3;

switch(haftaKuni) {

    case 1  : { System.out.println("Dushanba");   break; }
    case 2  : { System.out.println("Seshanba");  break; }
    case 3  : { System.out.println("Chorshanba");   break; }
    case 4  : { System.out.println("Payshanba"); break; }
    case 5  : { System.out.println("Juma"); break; }
    case 6  : { System.out.println("Shanba"); break; }
    case 7  : { System.out.println("Yakshanba"); break; }

    default : { System.out.println("bunday hafta kuni mavjud emas: " + haftaKuni); }
  }


char razmer = ‘X’;  

switch(razmer) {

    case 0  : { System.out.println("kichik razmer");   break; }
    case 1  : { System.out.println("o’rtacha razmer");  break; }
    case 2  : { System.out.println("katta razmer");   break; }
    case 3  : { System.out.println("juda katta razmer"); break; }

    default : { System.out.println("bunday razmer mavjud emas: " + razmer); }
}

Yuqoridagi hafta kunlariga oid misolni teskari holatda String o’zgaruvchi bilan tekshiramiz:

String haftaKuni = “Juma”;

switch(haftaKuni) {

    case “Dushanba”  : { System.out.println("Haftaning 1-kuni");   break; }
    case “Seshanba”  : { System.out.println("Haftaning 2-kuni ");  break; }
    case “Chorshanba”  : { System.out.println("Haftaning 3-kuni ");   break; }
    case “Payshanba”  : { System.out.println("Haftaning 4-kuni "); break; }
    case “Juma”  : { System.out.println("Haftaning 5-kuni "); break; }
    case “Shanba”  : { System.out.println("Haftaning 6-kuni "); break; }
    case “Yakshanba”  : { System.out.println("Haftaning 7-kuni "); break; }

    default : { System.out.println("bunday hafta kuni mavjud emas: " + haftaKuni); }
  }

Shunday holatlar bo’ladiki, o’zgaruvchining bir nechta qiymati uchun bir xil natija qaytarish zarur bo’ladi. Shunday holatda switch ifodalar qay tartibda yozilishini ko’rib chiqamiz. Quyidagi holatda 10 gacha bo’lgan sonni juft-toqlikka tekshiramiz:

int son = 7;

switch(son) {

    case 1  :
    case 3  : 
    case 5  : 
    case 7  : 
    case 9  : { System.out.println("Toq son"); break; }
    case 2  :
    case 4  : 
    case 6  : 
    case 8  : 
    case 10  : { System.out.println("Juft son"); break; }

    default : { System.out.println("10 gacha bo’lgan son kiriting "); }
  }

Yuqoridagi misolda agar son 9 dan boshqa toq songa, yoki 10 dan boshqa juft songa teng bo’lsa, birorta bo’sh case ifodaga tushadi va tekshirishda davom etib oxirgi toq yoki juft sonda xabar chiqaradi. Bu yerda sonning qiymati muhim emas, juft yoki toqligi muhim, shuni unutmang.