Java: План и дорожная карта развития + СОДЕРЖАНИЕ.
статья №13 Java: Условный оператор "if".
Приветствую Тебя, мой дорогой друг. Следующая условная конструкция - это тернарный оператор "?" в переводе обозначает "тройной", то есть состоит из трех частей:
- Условие;
- Значение при результате "true" от выполнения условия;
- Значение при результате "false" от выполнения условия.
То что помечено красным квадратом, обязательно для конструкции.
Но прежде чем продолжить, как и обещал ответ на задачу из предыдущей статьи.
Продолжаем тернарный оператор, в принципе, данный оператор - это короткая запись условной конструкции "if(...)-else", только вот со читабельной вложенностью будет облом, Java придется каждую строчку проверять.
Для примера давайте возьмем задачи из прошлой статьи, начнем с нахождения максимального среди двух переменных. Объявляем две переменные и сразу же их инициализируем "int x = 7, y = 6;". Результат отдельно в переменную сохранять не будем, а попробуем сразу вывести на консоль, пишем команду вывода "System.out.println()" в круглых скобочках воспроизводим наше условие которое мы писали для "if", а именно "x > y" после ставим символ тернарного оператора - вопросительный знак "?", справа от знака, мы должны прописать результат при положительном исходе, то есть, если случится так что "x" и впрямь будет больше "y", итак пишем "Переменная X больше Y" после кавычки ставим знак двоеточия ":" тем самым мы разделяем положительный результат от отрицательного, ну и заключительный кусок если "y" окажется больше "x", пишем "Переменная Y больше X". Ну вот, хватило одной строчки и одной команды вывода на консоль, а для решения этой же задачи в прошлой статье, нам потребовалось две строчки и две команды вывода на консоль, как то так.
Читабельная вложенность как я ранее писал, с данным оператором нам не воплотить.
Следующая задача, времена года, особо ничего сложного нет, для каждого времени года создаем тернарное условие, определенно какое-то из них выстрелит, ну а если выйдем за диапазон не беда, ничего не выведется, хотя можно условие задать еще и для такой ситуации. Согласитесь, весьма не удобно и не красиво.
А что если воплотим, эту не читабельную вложенность). Да еще проверку на диапазон сделаем.
Из-за такого кода наши уши бы горели частенько). Хотя мы же тренируемся). Давайте попробую этот код поговорить, начинаем с проверки диапазона "monthNum > 0 && monthNum < 13?" если результат "true" то есть мы в диапазоне, нас перекидывает в блок положительного результата, в нем пишем условие для Зимы "monthNum == 12 || monthNum == 1 || monthNum == 2 ?" если наше значение в пределах данного диапазона, то смело в блок положительного результата выводим "Зима", а если нет, то перекидывает нас в блок отрицательных результатов в котором мы должны прописать следующий диапазон для Весны "monthNum >= 3 && monthNum <= 5 ?"если наше значение в пределах данного диапазона, то смело в блок положительного результата выводим "Весна", а если нет, то перекидывает нас в блок отрицательных результатов в котором мы должны прописать следующий диапазон для Лето "monthNum >= 6 && monthNum <= 8 ?" если наше значение в пределах данного диапазона, то смело в блок положительного результата выводим "Лето", а если нет, то диапазоны наши закончились и смело можем вывести "Осень", последний блок отрицательного результата это для главного тернарного оператора, который проверяет диапазон, пишем "Проблема с диапазоном!". Ужас, да?)
Ну и последняя задача, нахождение максимального значения среди трех переменных. Объявляем и инициализируем переменные "int x = 9, y = 5, z = 8, max = 0;" введем четвертую переменную для сохранения результата. Данный вариант более читабельный получится, в начале выясним кто максимальное "x" или "y" пишем "max = x > y ? x : y;", на второй строчке выясним кто максимальное из результата первой строчки и переменной "z" пишем "max = max > z ? max : z;", думаю получилось читабельно.
А теперь извращения, куда же без них). Напишем все в одну строчку "max = x > y ? x > z ? x : z : y > z ? y : z;" читабельность вышла из чата)). Попробуйте разобраться в логике самостоятельно.
Вывод один, каждый оператор или конструкция для своего случая, не навредив качеству и читабельности кода. Дальше, все проясниться, пока мы только знакомимся с языком.
До встречи в следующей статье ;).
Поставь лайк если понравилась статья, тебе всего лишь "клик", а мне радости полные штаны =).
Подписывайся на канал, будет много интересных публикаций =).