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