Условный оператор if, if-else — введение в Java 007 #
В прошлом уроке я рассматривал оператор выбора Switch. Оператор IF имеет схожие функции и примерно те же цели. Основные отличия — в используемых условиях. Кстати, как обычно, верить мне необязательно: можно спросить у Google, например “java switch vs if сравнение”. Только на Хабре я нашёл несколько статей, рассматривающих эстетическую сторону вопроса, вопрос скорости, эффективности и вопрос используемых методов.
Пример: поездка в летний лагерь.
Если от родителей будет разрешение (true), то я поеду в летний лагерь. Иначе я останусь на всё лето дома.
if (true){
System.out.println("я поеду в летний лагерь");
}
else {
System.out.println("я останусь на всё лето дома");
}
Switch нет смысла использовать с булевыми значениями: т.к. это всего два варианта. И это одно из отличий if-else и switch.
Сразу про плюсы: If-else позволяет запускать несколько (больше) одной команд.
public class IfElseKosmo {
public static void main(String[] args) {
int a = 5;
final int SUPERCONSTANT_G = 10;
// модификатор final обозначает константность переменной, которую невозможно изменить.
// например, ускорение свободного падения на поверхности Земли или
// PI, которое всегда константо. Кроме этой особенности final на результаты вычисления
// не влияет
if (a < SUPERCONSTANT_G){
System.out.println("Первоночальное ускорение недостаточно");
System.out.println("Ракета не может стартовать");
System.out.println("Подготовить аварийные службы");
}
else {
System.out.println("Ракета улетает в космос");
System.out.println("Выпустить пресс-релиз об успешном запуске");
System.out.println("Подготовить программистов к государственным наградам");
}
}
}
В предыдущем уроке был очень жизненный пример про кассира, алкоголь и несовершеннолетних. В Switch нельзя указать “младше 18”. А в if else можно:
public class AlkogolIfElse {
public static void main(String[] args) {
int возрастПокупателя = 40;
if (возрастПокупателя < 16){
System.out.println("Алкоголь и сигареты продавать нельзя!!!");
}
else if (возрастПокупателя >= 18){
System.out.println("Можно продавать алкоголь и сигареты");
}
else {
System.out.println("Водку продавать ещё нельзя, а пиво и сигареты уже можно");
}
}
}
Переменные набраны кириллицей в учебных целях и, чтобы показать, что такое может пройти. Но считается плохим и очень плохим тоном использовать не ASCI символы в переменных.
Иногда программисты печально шутят, что вся жизнь кодера состоит из написания различных if else и Switch команд. Отчасти так и есть. В фундаменте Java не так много команд. И одну из самых часто употребляемых вы только что изучили.
Дополнительные материалы #
- The if-then and if-then-else Statements: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html
Домашнее задание #
- Напишите программу действий для сотрудника дорожной полиции, который остановил машину:
- при езде до 50 км/час нарушений нет;
- за езду от 50 км/час до 65 км/час — устное порицание и лекция на 5 минут;
- за превышение скорости от 16 км/час — 40 евро штрафа;
- за езду от 100 км/час до 130 км/час — штраф 500 евро;
- и за езду свыше 130 км/час — штраф в 1000 евро, конфискация прав на 3 года и конфискация транспортного средства.
- Напишите программу, которая объяснит наступление определённых событий, в зависимости от выбора “витязя”.
- Напишите программу для машины на светофоре. Что делать, если горит красный, жёлтый или зелёный свет.
- Напишите программу выдачи денег работнику с учётом надбавки за стаж, если базовая зарплата 500$. За 3 года работы надбавка 10%, за 5 лет работы надбавка 50%, за 10 лет работы надбавка 100%, за 15 лет работы надбавка 150%.
- Метод вывода даты на экран монитора принимает 3 целочисленных значения(день, месяц, год) и разделитель (например “-”). Проверить значения данных на адекватность, и если надо дописать нули.
- 5.6.2020 должно быть выведено на экран как “05-06-2020” - 50.40.2020 не должно быть выведено вообще