1. Послідовність if-ів

Іноді у програмі потрібно зробити багато різних дій залежно від значення якоїсь змінної або від значення якогось виразу.

Припустимо, завдання виглядає так:

  • Якщо температура вище 20 градусів — одягнути сорочку
  • Якщо температура вище 10 градусів і менше (або дорівнює) 20 — одягнути светр
  • Якщо температура вище 0 градусів і менше (або дорівнює) 10 — одягнути плащ
  • Якщо температура нижче 0 градусів — одягнути пальто.

Як це можна представити у коді:

int temperature = 9;

if (temperature > 20) {
   System.out.println("одягнути сорочку");
} else { // тут температура менше (або дорівнює) 20
   if (temperature > 10) {
      System.out.println("одягнути светр");
   } else { // тут температура менше (або дорівнює) 10
      if (temperature > 0) {
         System.out.println("одягнути плащ");
      } else // тут температура менше 0
         System.out.println("одягнути пальто");
   }
}

Оператори if-else можна вкладати один в одного, і у такий спосіб реалізовувати в програмі достатньо складну логіку.

Хоча зазвичай таку конструкцію програмісти записують трохи інакше:

int temperature = 9;

if (temperature > 20) {
   System.out.println("одягнути сорочку");
} else if (temperature > 10) { // тут температура менше (або дорівнює) 20
   System.out.println("одягнути светр");
} else if (temperature > 0) { // тут температура менше (або дорівнює) 10
   System.out.println("одягнути плащ");
} else { // тут температура менше 0
   System.out.println("одягнути пальто");
}

Два наведені приклади еквівалентні, але другий простіший із погляду сприйняття.


2. Нюанси else

Важливий момент:

Якщо у конструкції if-else не розставлені фігурні дужки, else належить до попереднього (найближчого до нього) if-у.

Приклад:

Наш код Як він працюватиме
int age = 65;

if (age < 60)
   if (age > 20)
      System.out.println("Треба працювати");
else
   System.out.println("Можна не працювати");
int age = 65;

if (age < 60) {
   if (age > 20)
     System.out.println("Треба працювати");
   else
     System.out.println("Можна не працювати");
}

Якщо дивитися на код у лівій частині, здається, що на екрані буде виведено напис «Можна не працювати». Однак, це не так. Насправді else і команда «Можна не працювати» належать до другого (найближчого) if -у.

У коді праворуч червоним виділені пов’язані if і else. Також спеціально розставлені дужки, які однозначно показують порядок виконання дій. Напис Можна не працювати ніколи не виводиться на екран, якщо age більше за 60.



3. Приклад використання оператора if-else

Оскільки ми так добре розібрали оператор if-else, наведемо приклад:

import java.util.Scanner;
public class Solution {
   public static void main(String[] args) {
     Scanner console = new Scanner(System.in);  // створюємо об’єкт Scanner
     int a = console.nextInt();  // читаємо з клавіатури перше число
     int b = console.nextInt();  // читаємо з клавіатури друге число
     if (a < b)                   // якщо a менше b
       System.out.println(a);     // виводимо на екран a
     else                         // інакше
       System.out.println(b);     // виводимо на екран b
   }
}
Виведення на екран мінімального із двох чисел.