Назад Зміст Вперед

Урок 2.4. Оператор switch-case.

1. Ланцюгові оператори if-else.

Java if використовується для перевірки умови. Повертає значення true або false.


1) if statement

if(умова){  
// Код, який буде виконуватися;  
}

Приклад.
public class IfExample {  
public static void main(String[] args) {  
    int age=20;  
    if(age>18){  
        System.out.print("Age is greater than 18");  
    }  
}  
}  

Output:Age is greater than 18



2) if-else statement

if(умова){  
             //Код, якщо умова true  
}else{  
            //Код, якщо умова false  
}  

Приклад. 
public class IfElseExample {  
public static void main(String[] args) {  
    int number=13;  
    if(number%2==0){  
        System.out.println("even number");  
    }else{  
        System.out.println("odd number");  
    }  
}  
}  

Output: odd number

3) nested if statement - вкладений оператор if


4) if-else-if ladder

if(умова_1){  
                //код, якщо умова_1 true  
}else if(умова_2){  
                //код, якщо умова_2 true  
}  
else if(умова_3){  
                //код, якщо умова_3 true    
}  
...  
else{  
//код, якщо всі умови false  
}  

Приклад.
public class IfElseIfExample {  
public static void main(String[] args) {  
    int marks=65;  
      
    if(marks<50){  
        System.out.println("fail");  
    }  
    else if(marks>=50 && marks<60){  
        System.out.println("D grade");  
    }  
    else if(marks>=60 && marks<70){  
        System.out.println("C grade");  
    }  
    else if(marks>=70 && marks<80){  
        System.out.println("B grade");  
    }  
    else if(marks>=80 && marks<90){  
        System.out.println("A grade");  
    }else if(marks>=90 && marks<100){  
        System.out.println("A+ grade");  
    }else{  
        System.out.println("Invalid!");  
    }  
}  

Output: C grade

2. Оператор switch-case. Особливості нестандартного використання операторів default, break (class SwitchCase_1, class SwitchCase_2).


Оператор switch забезпечує ясний спосіб перемикання між різними частинами програмного коду в залежності від значення однієї змінної або виразу. Загальна форма цього оператора така:

switch(вираз){    
                         case value1:    // Код, який буде виконуватися;    
                    break;   
                         
                         case value2:   // Код, який буде виконуватися;    
                         break;  
                    ......    
    
                         default:     
                         //буде виконуватися коли жоден з операторів case не відповідає значенню виразу; }    

Приклад.
public class SwitchExample {  
public static void main(String[] args) {  
    int number=20;  
    switch(number){  
    case 10: System.out.println("10");break;  
    case 20: System.out.println("20");break;  
    case 30: System.out.println("30");break;  
    default:System.out.println("Not in 10, 20 or 30");  
    }  
}  
}  

Output: 20


Результатом обчислення виразу може бути значення будь-якого простого типу, при цьому кожне із значень, зазначених в операторах case, повинно бути сумісним за типом з виразом в операторі switch. Всі ці значення повинні бути унікальними літералами. Якщо ж вказати в двох операторах case однакові значення, транслятор видасть повідомлення про помилку.

Оператор switch працює наступним чином. Обчислення значення виразу порівнюється з усіма значеннями, зазначеними в операторах case. Якщо при цьому знаходиться оператор case зі значенням, яке збігається зі значенням виразу, виконується відповідний код. Якщо ж значення виразу не відповідає жоден з операторів case, управління передається коду, розташованому після ключового слова defaultОператор default необов'язковий. У разі, коли жоден з операторів case не відповідає значенню виразу і в switch відсутня оператор default, виконання програми триває з оператора, наступного за оператором switch.

Усередині оператора switch (а також всередині циклічних конструкцій) break без мітки призводить до передачі управління на код, що стоїть після оператора switch. Якщо break відсутній, після поточного розділу case буде виконуватися наступний. Іноді буває зручно мати в операторі switch кілька суміжних розділів case, не поділених оператором break.

Приклад.
class SwitchSeason {
public static void main (String args []) {
int month = 4; String season;
switch (month)
{
case 12:
case 1:
case 2:
      season = "зима ";
      break;
case 3:
case 4:
case 5:
      season = "весна ";
      break;
case 6:
case 7:
case 8 :
      season = "літо ";
      break;
case 9:
case 10:
case 11:
      season = "осінь ";       break;
default:
      season = "Немає такого місяця"; } 
System.out.println ( "квітень - це " + season + "."); } }     

Приклад.
public classSwitchCase_1{
   publicstaticvoidmain(Stringargs[]) {
// нестандартне використання оператора default
             int x = 10;
             switch (x) {
             case 2: System.out.print(“2”);
             default: System.out.print(“default”);
             case3: System.out.print(“3”);
//результат “default 3 ” замість
//очікуваного результату “default”
   }
}

Приклад.
public class SwitchCase_2{
   public static void main(Stringargs[]) {
// нестандартне використання операторів default, break
            int x = 10;
            switch (x) {
            case 2: System.out.print(“2”);
            default: System.out.print(“default”);
            break;
            case3: System.out.print(“3”);//очікуваний результат “default”
  }
}

Література для класної роботи:
[Шилдт], ст.115, 116 (п.1),
[Шилдт], ст.116…119 (п.2),
[Шилдт-8], ст.131…132 (п.2 – switch for Strings),
[Хорстманн], ст.106,107 (п.2),
[Sangera], р. 157…159 (п.2).

Тести для класної роботи:
[task-mughal]: 5.3, 5.4(п.2),
[Raposa], AssTest: № 26(п.2).

Тести для домашньої роботи:

[SierraExam], AssTest1: № 5 (п.1),
[Heller],сh.5: №5, 16 (п.2),
[Sangera],ch.6: № 4,7(п.2),
[Jaworsky], p.90: №8(п.2),
[Вязовик], лек.10: №10.3.

Java для начинающих. УРОК J-8. JAVA ЛОГИЧЕСКИЕ И УСЛОВНЫЕ ОПЕРАТОРЫ (IF, IF-ELSE И SWITCH)



.