JavaRush /Курсы /Модуль 1. Java Syntax /Нюансы работы условного оператора

Нюансы работы условного оператора

Модуль 1. Java Syntax
4 уровень , 1 лекция
Открыта

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
   }
}
Вывод на экран минимального из двух чисел
Комментарии (9)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Антон Уровень 8
10 мая 2025
в самой лекции про тернарный оператор ничего не сказано - интересно, его часто используют на практике или нет? есть продвинутые и опытные ребята, кто может ответить?)
Анжелика Уровень 31
9 августа 2025
часто
Пётр Уровень 95
12 марта 2025
Просто и понятно! Браво
Станислав Уровень 42
10 ноября 2024
В примере выше на печать ничего не выведется

int age = 65;

if (age < 60)
   if (age > 20)
      System.out.println("Надо работать");
else
   System.out.println("Можно не работать");
Stas S Уровень 108 Expert
20 января 2022

Надпись Можно не работать никогда не выводится на экран при age больше 60
Как и другая надпись, странный пример.
Andrei Уровень 34
23 февраля 2022
Да, в таком случае нечего выводится не будет.
Антон Уровень 9
28 декабря 2022
тоже так подумал и удивился
Виктор Уровень 7
7 января 2022
Фигурные скобки желательно ВСЕГДА ставить в этом операторе что б не запутаться. ДА и для читабельности лучше.
Виктор Шефф Уровень 111 Expert
6 декабря 2021
Наверное, самый понятный условный оператор из всех)