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 // тут температура не вища за 20
   if (temperature > 10)
      System.out.println("одягти светр");
   else // тут температура не вища за 10
      if (temperature > 0)
         System.out.println("одягти плащ");
      else // тут температура менша за 0
         System.out.println("одягти пальто");

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

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
   }
}
Виведення на екран мінімального з двох чисел