Oldingi maqolalarda har xil turdagi operatorlar haqida gaplashib o‘tdik. Java dasturlash tilida «boshqaruvchi operatorlar» deb nomlangan maxsus operatorlar mavjud. Bu operatorlar dasturning holatidan qat’iy nazar, kodlar ichida har xil o‘tishlarni amalga oshirib beradi. Barcha boshqaruvchi operatorlarni 3 guruhga bo‘lish mumkin.

1. Tanlash operatorlari, dasturda bu operatorlar biror bir shartga asosan tanlovni amalga oshirib beradi.

2. Takrorlovchi(sikl) operatorlar, dasturdagi bir yoki bir necha operatorlar majmuasini bajarilishini biror shartga ko‘ra takrorlab turish uchun ishlatiladi.

3.  O‘tish(sakrash) operatorlari, bir yoki bir necha operatorlar majmuasini bajarilishini inkor etib, kerakli operatorga o‘tish uchun ishlatiladi.

Java dasturlash tilida 2 ta tanlash operatori mavjud: IF va SWITCH. Qo‘yilgan masalaga qarab ulardan biri ishlatilishi mumkin, maqola «IF» tanlash operatoriga bag‘ishlanadi.

IF operatori, butun kod ishlashini ikkita yo‘ldan biriga yo‘naltirib yuboradi, ya’ni qo‘yilgan shart asosida kompilyator biror yo‘lni tanlab, o‘z ishini davom ettiradi.

if(qandaydir shart) operator_1
else operator_2

Bu yerda qo‘yilgan shart natijasi boolean(agar esingizda bo‘lsa, boolean tipi yoki rost(true) yoki yolg‘on(false) bo‘lishi mumkin) tipidagi biror qiymatdir. Shart esa biror solishtirish amalidan iborat bo‘ladi.

Operator_1(yoki 2), istalgan operator yoki operatorlar jamlanmasi bo‘lishi mumkin. Agar operatorlar ko‘p bo‘lsa ular figurali({ }) qavsga olinishi shart. Agar shart bajarilsa, operator_1, bajarilmasa operator_2 ishlaydi.

Umumiy holda aytadigan bo‘lsak, dastlab qavs ichidagi shart bajariladi va natija olinadi, olingan natija true bo‘lsa, operator_1 ishlaydi, agar shartdan false chiqsa operator_2 ishlaydi va operator_1 tashlab ketiladi(bajarilmaydi). Misol ko‘ramiz.

class test{
public static void main(String[] args){
    int a=30;
    int b=20;
    if (a>b) {
    System.out.println("a katta b dan");
   }
}
}

Ikkita o‘zgaruvchi e’lon qilinmoqda(a va b) va ularga mos ravishda qiymatlar berildi(30, 20). Keyin tekshuruv amalga oshirildi, agar «a» o‘zgaruvchi «b» o‘zgaruvchidan katta bo‘lsa, blokdagi operator ishga tushirilsin, aks holda bu blok tashlab ketilsin.

choice_1

Keling endi, shartdagi belgini teskarisiga almashtiramiz,

class test{
public static void main(String[] args){
    int a=30;
    int b=20;
    if (a<b) {
    System.out.println("a katta b dan");
    }
}
}

Bunda, shart bajarilmayapti, ya’ni shartdan yolg‘on(false) natija chiqdi. Shu sababli ekranga chiqaruvchi operator bloki tashlab ketildi va dastur tugatildi.

choice_2

Bu misol uchun, «else» kalit so‘zini kiritish zarur, ya’ni agar «a» katta bo‘lsa, katta degan yozuv, «a» kichik bo‘lsa, kichik degan yozuv chiqarish maqsadida. «else» kalit so‘zi aks holda degan ma’noni beradi.

class test{
public static void main(String[] args){
    int a=30;
    int b=20;
    if (a<b) {
    System.out.println("a kichik b dan");
    }
    else
    {
        System.out.println("a katta b dan");
    }
}
}

Shart asosida, yoki asosiy blok(5-7 qatorlar), yoki «else» bloki(8-11) ishga tushadi.

choice_3

Misolda, figurali qavs ishlatmasa ham bo‘laveradi, bu qavs operatorlar guruhi (bir necha operatorlar) dan foydalanilganda ishlatiladi, lekin ko‘pchilik bitta operatorni ham, bunday qavs ichiga oladi(adashib ketmaslik uchun). Agar bir necha operatorlar figurali qavs ichiga olinmasa, bu operatorlarning birinchisi shart asosida ishlaydi, kompilyator qolgan operatorlarni dasturning davomi deb bilib, shartga bog‘liq bo‘lmagan holda ketma-ket ishga tushiraveradi. Misol ko‘ramiz,

class test{
public static void main(String[] args){
int a=30;
int b=20;
if (a>b) {
      System.out.println("a soni b sonidan katta");
}
else
     System.out.println("a soni b sonidan kichik");
     int c=a+b;
     System.out.println("Summa c="+c);
}
}

«else» bloki, qavs ichiga olinmaganligi tufayli, ekranga chiqarish operatori(9-qator) «else» operatoriga tegishli deb hisoblanib, qolgan operatorlar unga bog‘liq bo‘lmagan holda ishlaydi. Shuning uchun, «c» o‘zgaruvchi ikkita o‘zgaruvchining(a, b) yig‘indisi sifatida namayon bo‘lmoqda.

choice_4

Endi, «else» dan keyingi uchta operatorni figurali qavs ichiga olamiz.

class test{
public static void main(String[] args){
int a=30;
int b=20;
if (a>b) {
      System.out.println("a soni b sonidan katta");
}
else{
     System.out.println("a soni b sonidan kichik");
     int c=a+b;
     System.out.println("Summa c="+c);
}
}
}

«c» o‘zgaruvchi bilan bog‘liq operatorlar(e’lon qilish, ekranga chiqarish) ishlamaydi, ular qachon «else» operatori ishlasa(shart noto‘g‘ri bo‘lsa), ishlaydi.

choice_5

Ba’zi hollarda shart ichida, shart ishlatish kerak bo‘ladi, bu holda «if» ichida yana bir bor «if» operatori ishlatiladi.

class test{
public static void main(String[] args){
    int a=30;
    int b=20;
    if (a>b) {
        if (a==30) {
           System.out.println("a="+a);
       }
    }
    else {
      System.out.println("a kichik b dan");
     }
}
}

Bu misolda, dastlab «a» o‘zgarvchi «b» o‘zgaruvchidan kattaligi, keyin, «a» o‘zgaruvchi qiymati 30 soniga tengligi tekshirilmoqda.

choice_6

«else» operatori, eng yaqin turgan «if» operatorining yopilgan figurali qavsiga tegishli bo‘ladi(yopilgan figurali qavs qaysi «if»ga tegishli bo‘lsa, «else» o‘shaniki bo‘ladi). Misol,

choice_7

Misolda, qaysi «if» qaysi «else»ga tegishliligi marker orqali ko‘rsatilgan. Demak, 5-qatordagi «if»ning «else»i 16 qatordan o‘rin olgan, 12-chi qatordagi «else» 9-qatordagi «if»ga tegishli.