1. Оператор if else
От программ было бы мало толку, если бы они делали одно и то же, независимо от того, как меняются внешние обстоятельства. Программе нужно уметь подстраиваться под разные ситуации и делать одни действия в одних случаях, другие — в других.
В Java это реализовано с помощью условного оператора — ключевых слов if и else, которые позволяют выполнять разные блоки команд в зависимости от правдивости условия.
Условный оператор состоит из трех частей: условия, команды 1 и команды 2. Если условие верно (истинно), выполняется команда 1, иначе выполняется команда 2. Команды никогда не выполняются одновременно. Общий вид этого оператора таков:
if (условие)
команда1;
else
команда2;
if-else
if переводится как «если», а else как «иначе». Человеческим языком это можно записать так:
Если условие истинно, то
выполнить команда1;
иначе
выполнить команда2;
if-else человеческим языком
Примеры:
// На экран будет выведена надпись: Вы еще ребенок
int age = 17;
if (age < 18)
System.out.println("Вы еще ребенок");
else
System.out.println("Вы уже взрослый");
// На экран будет выведена надпись: Тепло
int temperature = 5;
if (temperature < 0)
System.out.println("На улице мороз");
else
System.out.println("Тепло");
// На экран будет выведена надпись: Можно сдавать на права
int age = 18;
if (age == 18)
System.out.println("Можно сдавать на права");
else
System.out.println("Можно копить на машину");
2. Блок команд
Если при выполнении (или невыполнении) условия вы хотите, чтобы ваша программа исполнила несколько команд, их можно объединить в блок команд.
Чтобы объединить команды в блок, нужно «завернуть» их в фигурные скобки. Вот как это выглядит в общем случае:
{
команда1;
команда2;
команда3;
}
Команд в блоке может быть сколько угодно. И даже ноль.
Примеры сочетания оператора if-else и блока команд:
// На экран будет выведена надпись: Ты еще ребенок. Не спорь со взрослыми
int age = 17;
if (age < 18)
{
System.out.println("Ты еще ребенок");
System.out.println("Не спорь со взрослыми");
}
else
{
System.out.println("Вы уже взрослый");
System.out.println("Ну и молодежь пошла");
}
// На экран будет выведена надпись: Тепло
int temperature = 5;
if (temperature < 0)
{
System.out.println("На улице мороз");
System.out.println("Шапку надень");
}
else
System.out.println("Тепло");
// Будет выполнен пустой блок команд. На экран ничего не выведется.
int age = 21;
if (age == 18)
System.out.println("Можно получать права");
else
{
}
3. Сокращенный синтаксис оператора if
Если код в блоке else отсутствует, то его можно опустить. Тогда оператор if примет вид:
if (условие)
{
команда1;
}
if
Пример:
int age = 19;
if (age >= 18)
{
System.out.println("Вы совершеннолетний!");
}
Как это работает?
Если условие истинно, то выполняется блок кода. Если ложно, то ничего не происходит — программа идет дальше.
Блок else в программе есть, но он пустой (между фигурными скобками нет никаких команд). Его можно просто убрать: в программе от этого ничего не поменяется.
4. Комбинирование условий: else if
Иногда нужно проверить не просто «да/нет», а выбрать из нескольких вариантов. Тут на помощь приходит связка else if:
if (условие1)
{
// Выполняется, если условие1 истинно
}
else if (условие2)
{
// Выполняется, если условие2 истинно, а условие1 — ложно
}
else
{
// Выполняется, если ни одно из условий выше не подошло
}
Пример:
int hour = 13;
if (hour < 12)
{
System.out.println("Доброе утро!");
}
else if (hour < 18)
{
System.out.println("Добрый день!");
}
else
{
System.out.println("Добрый вечер!");
}
Что здесь происходит?
- Если время до 12 — утро.
- Если от 12 до 18 — день.
- Если больше — вечер.
- Программа выбирает только ОДИН из вариантов! Как только подходит условие — остальные даже не проверяются.
5. Схематическая иллюстрация: блок-схема ветвления
Вот как это выглядит в виде блок-схемы:
А если несколько условий:
Это очень напоминает развилки в настольных ролевых играх: идёшь налево — одно, направо — другое, прямо — ещё что-то!
6. Какие условия можно проверять?
Внутри круглых скобок после if должно быть ЛОГИЧЕСКОЕ выражение — результат которого true или false.
Основные операторы сравнения:
| Оператор | Значение | Пример |
|---|---|---|
|
Равно | |
|
Не равно | |
|
Больше | |
|
Меньше | |
|
Больше или равно | |
|
Меньше или равно | |
Примеры условий:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
Заметьте: = (один знак) — это присвоение. == (два знака) — сравнение. Это одна из самых популярных ошибок среди новичков! Если вы нечаянно напишете:
if (x = 5) // ОШИБКА!
— компилятор вас отругает, и очень правильно сделает.
7. Работа со строками в условиях
Сравнение с помощью == в Java работает корректно для чисел. Дробные числа сравнивать через == нежелательно, а строки сравнивать через == нельзя — для строк используйте метод equals(), который сравнивает содержимое строк (а не ссылки).
Подробнее о тонкостях сравнения строк мы ещё поговорим позже. А как правильно сравнивать строки — в примере ниже:
String password = console.nextLine();
if (password.equals("qwerty")) // вызываем метод equals() и передаем в него вторую строку
{
System.out.println("Вы вошли!");
}
8. Особенности и нюансы:
Фигурные скобки: нужны или нет?
Если после if или else только одна команда, фигурные скобки можно опустить:
if (age > 18)
System.out.println("Вам больше 18!");
// Но безопаснее ВСЕГДА их писать:
if (age > 18)
{
System.out.println("Вам больше 18!");
}
Совет: пишите всегда со скобками. Это защитит от кучи ошибок, особенно при расширении кода.
Логические ошибки: внимательнее с условиями!
Если напишете так:
if (age > 18)
System.out.println("Вам больше 18!");
System.out.println("Добро пожаловать!");
То компилятор будет читать этот код так:
if (age > 18)
{
System.out.println("Вам больше 18!");
}
System.out.println("Добро пожаловать!");
Вторая строка всегда будет выполняться — скобки нужны, чтобы обе строки были внутри «ветки».
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ