JavaRush /Курсы /Java Syntax Pro /Нюансы работы условного оператора

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

Java Syntax Pro
3 уровень , 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 // тут температура меньше (или равна) 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
   }
}
Вывод на экран минимального из двух чисел


Комментарии (373)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
d0vbnya Уровень 2
28 ноября 2025

 if (age < 18)
        {
            if (age >= 6)
                System.out.print("нужно ходить в школу");
        }
        else
            System.out.print("пора в институт");
Никита Языков Уровень 11
23 августа 2025
Гнилые орешки Big Bob
Максим Уровень 34
12 августа 2025
Если не расставлять фигурные скобки, то условие становится нечитаемым и это не делает код проще Советую всегда и везде ставить фигурные скобки, это сильно упрощает жизнь
8 августа 2025
Совсем запутался. Аж 9 попыток 😅
Александр Уровень 7
25 декабря 2025
так же , но я прежде чем отдаю на проверку сам запускаю код и смотрю как выполняется, а из за того что не дочитал последнее требование(не прокрутил ниже) никак не мог понять почему ничего не происходит, а потом прокрутил ниже увидел последний пункт и все встало на свои места. отдал на проверку и получается с 1 попытки ну и заодно понял как работает если ставить скобки не там где надо
aestag Уровень 5
29 июля 2025
тот код с условием if и возрастом писал Путин
Владислав Уровень 4
15 июля 2025
Задача решается подстановкой только 2 скобок. Можно открыть первый if и закрыть его перед else. Таким образом else относится к первому if. второй if выполняется и заканчивается внутри 1 if.
Alyona Paker Уровень 3
9 июня 2025
Задача " Исправить программу несложно: достаточно в нужном месте поставить фигурные скобки.". В результате дело не только в скобках 🤦‍♀️ риалли?
Romano57 Уровень 3
15 июня 2025
Дело только в скобках
Anonymous #3585174 Уровень 33
25 мая 2025
good
Random Уровень 6
15 мая 2025

 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int age = scanner.nextInt();
        if (age < 18) {//открывающая скобка здесь
            if (age >= 6)
                System.out.println("нужно ходить в школу");
        /**здесь закрывающая*/} else System.out.println("пора в институт");
    }
Egor Atamanchuk Уровень 6
2 апреля 2025
объясните почему это работает ? Scanner scanner = new Scanner(System.in); int age = scanner.nextInt(); if (age >= 6) { if (age< 18) System.out.println("нужно ходить в школу"); else System.out.println("пора в институт"); } } }
Nikolay-Shirokov Уровень 1
2 апреля 2025
Попробуй подставить значение и идти по условиям. Подставь значения 3, 10, 30 Первое значение меньше 6, поэтому ничего не делаем. 10 больше 6 и меньше 18, поэтому нужно ходить в школу. 30 - больше 6 поэтому попадаем во в проверку внутреннего условия, не меньше 18, поэтому попадаем в иначе условия второго уровня с выводом "пора в институт"