Ещё одним вариантом работы оператора if является использование его с ключевым словом else.
В таком случае конструкция выглядит следующим образом.
if ( проверочное выражение ) код для исполнения если истина;
else код для исполнения если ложь;
В данном случае все варианты использования оператора if также актуальны и для if else.
Проверочное выражение может быть как простым, так и сложным. Код для исполнения в обоих случаях может быть как состоящим из одной команды, так и из нескольких. Например,
if ( ( проверочное выражение 1 ) || ( проверочное выражение 2 ) )
{
команда 1;
команда 2;
...
команда n;
}
else
{
команда 3;
команда 4;
...
команда m;
}
Отвечу ещё на один вопрос, который возникал по крайней мере у меня. А зачем вообще нужна вторая часть оператора - else? Если условие в скобках ложно, то команды 1, 2 ... n по идее итак не должны выполниться... А следом вроде бы итак должны выполниться команды 3, 4 ... m.
Но нет. else всё-таки нужная штука.
Вариант 1. Если бы не было else.
Тогда если значение сложного выражения в скобках истинно, то команды 1, 2 ... n выполнятся. Если бы дальше не было else, то дальше выполнились бы команды 3, 4 ... m в любом случае, независимо от истинности выражения в скобках.
Таким образом, команды 1, 2 ... n либо выполнятся (если значение выражения истинно), либо не выполнятся (если ложно). А команды 3, 4 ... m выполнятся в любом случае.
Вариант 2. else есть.
В таком случае если проверочное выражение верно, то выполнятся команды 1, 2 ... n. Если проверочное выражение ложно, то выполнятся команды 3, 4 ... m.
То есть в данном случае у нас есть выбор - либо выполнятся команды 1, 2 ... n, либо выполнятся 3, 4 ... m.
Если рассматривать с точки зрения алгоритма, то первый вариант:
Второй вариант:
Ну и теперь задача.
Мы задаём время - только час. Без минут. Нужно определить, до полудня или после полудня заданный час. И вывести на экран количество часов в интервале от 1 до 12 и указать до полудня или после полудня.
Например, если мы задали 7, то программа должна вывести "Сейчас 7 часов до полудня". Если задали 14, то программа должна вывести "Сейчас 2 часа после полудня". Для упрощения задачи - если мы задаём 12, то считаем, что это 12 часов до полудня, если 24 - то это 12 часов после полудня. Интервал значений - от 1 до 24 (0 не задаём).
Рисуем алгоритм.
Как и все предыдущие он не совершенен, но для понимания работы оператора if () else он подойдёт.
Переводим алгоритм в код
Создаём новый класс с именем Polden и объявляем главный метод main
class Polden
{
public static void main (String[] args)
{
}
}
Как и в предыдущем уроке двигаемся по стрелкам.
Объявляем переменную chas и задаём ей значение.
int chas = 18;
Далее проверяем, находится ли значение переменной chas в интервале от 0 до 12. Если находится, то сразу выводим её значение на экран.
if ( ( chas >0 ) && ( chas <= 12 ) )
{
System.out.println("Сейчас " + chas + ":00" + " до полудня");
}
Выделим фигурными скобками код для исполнения для лучшей читаемости кода.
Если переменная chas не находится в интервале от 0 до 12, то идём по второй стрелке ромба в алгоритме.
else
{
chas = chas - 12;
System.out.println("Сейчас " + chas + ":00" + " после полудня");
}
Уменьшили переменную chas на 12 и вывели значение на экран.
Сохраняем файл с именем Polden.java
Компилируем и запускаем
Попробуйте самостоятельно изменить значение переменной chas на любое целое число в интервале от 1 до 24 включительно и проверьте результат выполнения программы.
Выводы:
- Конструкция if () else является наиболее распространенным вариантом условного ветвления программы;
- Конструкция if () else позволяет выбрать какой набор команд будет выполняться - стоящий после скобок (если выражение в них истинно) или после ключевого слова else (если выражение в скобках ложно);
- В случае необходимости выполнить не одну команду, а несколько, как в случае истинности выражения, так и в случае если оно ложно, все команды необходимо заключить в фигурные скобки { }.
Ссылка на предыдущий урок
Ссылка на следующий урок
Ссылка на содержание курса