Java if else что это

Условные конструкции — Основы Java

Условные конструкции позволяют выполнять разный код, основываясь на логических проверках. Посмотрим на таком типичном примере:

  • Человек хочет оплатить покупку с карты
  • Если на счету есть деньги, то нужная сумма спишется автоматически
  • Если денег нет, то операция будет отклонена

Конструкция if

Для примера напишем метод, который определяет тип переданного предложения. Для начала он будет отличать обычные предложения от вопросительных:

public static String getTypeOfSentence(String sentence)  if (sentence.endsWith("?"))  return "question"; > return "general"; > App.getTypeOfSentence("Hodor"); // "general" App.getTypeOfSentence("Hodor?"); // "question" 

if — конструкция языка, управляющая порядком инструкций. В скобках ей передается логическое выражение, а затем описывается блок кода в фигурных скобках. Этот блок кода будет выполнен, только если условие выполняется.

Если условие не выполняется, то блок кода в фигурных скобках пропускается, и метод продолжает свое выполнение дальше. В нашем случае следующая строчка кода — return «general»; — заставит метод вернуть строку и завершиться.

Конструкция if-else

Условная конструкция if имеет несколько разновидностей. Одна разновидность включает в себя блок, который выполняется, если условие ложно:

if (x > 5)  // Если условие true > else  // Если условие false > 

Такая структура может понадобиться при начальной инициализации значения. В примере ниже проверяется наличие email . Если он отсутствует, то устанавливаем значение по умолчанию, если его передали, то выполняем нормализацию:

// Здесь приходит email if (email.equals(""))  // Если email пустой, то ставим дефолт email = "support@hexlet.io"; > else  // Иначе выполняем нормализацию email = email.trim().toLowerCase(); > // Здесь используем эту почту 

Если ветка if содержит return , то else становится не нужен — его можно просто опустить:

if (/* условие */)  return /* какое-то значение */; > // Продолжаем что-то делать, потому что else не нужен 

Конструкция else if

В самой полной версии конструкция if содержит не только ветку else , но и другие условные проверки с помощью else if . Такой вариант используется при большом количестве проверок, которые взаимоисключают друг друга:

if (/* что-то */)  > else if (/* другая проверка */)  > else if (/* другая проверка */)  > else  > 

Здесь стоит обратить внимание на два момента:

Напишем для примера расширенный метод определяющий тип предложения. Он распознает три вида предложений:

App.getTypeOfSentence("Who?"); // "Sentence is question" App.getTypeOfSentence("No"); // "Sentence is general" App.getTypeOfSentence("No!"); // "Sentence is exclamation" public static String getTypeOfSentence(String sentence)  var sentenceType = ""; if (sentence.endsWith("?"))  sentenceType = "question"; > else if (sentence.endsWith("!"))  sentenceType = "exclamation"; > else  sentenceType = "general"; > return "Sentence is " + sentenceType; > 

Теперь все условия выстроены в единую конструкцию. Оператор else if — это «если не выполнено предыдущее условие, но выполнено текущее». Получается такая схема:

  • Если последний символ ? , то «question»
  • Иначе, если последний символ ! , то «exclamation»
  • Иначе «general»

В итоге выполнится только один из блоков кода, относящихся ко всей конструкции if .

Тернарный оператор

Посмотрите на определение метода, который возвращает модуль переданного числа:

// Если больше нуля, то выдаем само число. Если меньше, то убираем знак public static int abs(int number)  if (number >= 0)  return number; > return -number; > App.abs(10); // 10 App.abs(-10); // 10 

В Java существует конструкция, которая по своему действию аналогична конструкции if-else, но при этом является выражением. Она называется тернарный оператор.

Тернарный оператор — единственный в своем роде оператор, требующий три операнда. Он помогает писать меньше кода для простых условных выражений. Наш пример выше с тернарным оператором превращается в три строки кода:

public static int abs(int number)  return number >= 0 ? number : -number; > 

Общий шаблон выглядит так:

predicate> ? expression on true> : expression on false> 

То есть сначала мы записываем логическое выражение, а дальше два разных варианта поведения:

  1. Если условие истинно, выполняет вариант до двоеточия
  2. Если условие ложно, выполняет вариант после двоеточия

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Источник

Ветвление в Java

Java-университет

Ветвление в Java - 1

В данной статье мы рассмотрим такое понятие как ветвление в компьютерных программах в общем и написанных на ЯП Java. Поговорим о таких управляющих конструкциях, как:

  • if-then (или же if )
  • if-then-else (или же if-else )
  • switch-case

Ветвление

if-then

Оператор if-then , или же просто if пожалуй самый распространенный оператор. Выражение “да там 1 if написать” уже стало крылатым. Оператор if имеет следующую конструкцию:

  • bool_condition — boolean выражение, результатом которого является true или false. Данное выражение называют условием.
  • statement — команда (может быть не одна), которую необходимо исполнить, в случае, если условие истинно ( bool_statement==true )
 public static void main(String[] args) < Scanner scanner = new Scanner(System.in); System.out.print("Сколько процентов заряда батареи осталось на вашем смартфоне?"); int a = scanner.nextInt(); if (a < 10) < System.out.println("Осталось менее 10 процентов, подключите ваш смартфон к зарядному устройству"); >> 

В данной программе пользователю предлагается ввести количество процентов заряда батареи на его смартфоне. В случае, если осталось менее 10 процентов заряда, программа предупредит пользователя о необходимости зарядить смартфон. Это пример простейшей конструкции if . Стоит заметить, что если переменная `а` будет больше либо равна 10, то ничего не произойдет. Программа продолжит выполнять код, который следует за конструкцией if . Также заметим, что в данном случае, у конструкции if есть только одна последовательность действий для исполнения: напечатать текст, либо не делать ничего. Эта вариация ветвления с одной “ветвью”. Такое порой бывает необходимо. Например когда мы хотим обезопасить себя от неправильных значений. К примеру, мы не можем узнать количество букв в строке, если строка равна null . Примеры ниже:

 public static void main(String[] args) < String x = null; printStringSize(x); printStringSize("Не представляю своей жизни без ветвлений. "); printStringSize(null); printStringSize("Ифы это так захватывающе!"); >static void printStringSize(String string) < if (string != null) < System.out.println("Кол-во символов в строке `" + string + "` lang-java line-numbers"> if (bool_condition) < statement1 >else
  • bool_statement — boolean выражение, результатом которого является true или false. Данное выражение называют условием.
  • statement1 — команда (может быть не одна), которую необходимо выполнить, если условие истинно ( bool_statement==true )
  • statement2 — команда (может быть не одна), которую необходимо выполнить, если условие ложно ( bool_statement==false )
 Если (bool_condition), то Иначе
 public static void main(String[] args) < Scanner scanner = new Scanner(System.in); System.out.print("Сколько процентов заряда батареи осталось на вашем смартфоне?"); int a = scanner.nextInt(); if (a < 10) < System.out.println("Осталось менее 10 процентов, подключите ваш смартфон к зарядному устройству"); >else < System.out.println("Заряда вашей батареи достаточно для того, чтобы прочитать статью на Javarush"); >> 

Тот же пример об уровне заряда батареи на смартфоне. Только если в прошлый раз программа только лишь предупреждала о необходимости зарядить смартфон, то в этот раз у нас появляется дополнительное уведомление. Разберем этот if :

Если a < 10 истинно (уровень заряда батареи меньше 10), программа выведет на печать один текст. Иначе, если условие a < 10 не выполняется, то программа выведет уже совсем другой текст. Доработаем также и второй наш пример, в котором мы выводили на экран количество букв в строке. В прошлый раз программа не выводила ничего, если переданная строка была равна null . Исправим этом, превратив обычный if в if-else :

 public static void main(String[] args) < String x = null; printStringSize(x); printStringSize("Не представляю своей жизни без ветвлений. "); printStringSize(null); printStringSize("Ифы это так захватывающе!"); >static void printStringSize(String string) < if (string != null) < System.out.println("Кол-во символов в строке `" + string + "`=" + string.length()); >else < System.out.println("Ошибка! Переданная строка равна null!"); >> 

В методе printStringSize в конструкцию if мы добавили блок else . Теперь, если мы запустим программу, она выведет в консоль уже не 2 строки, а 4, хотя вводные (метод main ) остались такими же, как и в прошлый раз. Текст, который выведет программа:

 Ошибка! Переданная строка равна null! Кол-во символов в строке `Не представляю своей жизни без ветвлений. `=43 Ошибка! Переданная строка равна null! Кол-во символов в строке `Ифы это так захватывающе!`=25 

Допустимы ситуации, когда после else следуют не команды на исполнение, а еще один if . Тогда конструкция принимает следующий вид:

 If (bool_condition1) < statement1 >else if (bool_condition2) < statement2 >else if (bool_conditionN) < statementN >else
  • bool_condition1
  • bool_condition2
  • bool_conditionN
  • statement1
  • statement2
  • statementN
 Если (bool_condition1) то Иначе если (bool_condition2) то Иначе если (bool_conditionN) то Иначе

Последняя строка в данном случае опциональна. Можно обойтись и без последнего одинокого else . И тогда конструкция примет следующий вид:

 If (bool_condition1) < statement1 >else if (bool_condition2) < statement2 >else if (bool_conditionN)
 Если (bool_condition1) то Иначе если (bool_condition2) то Иначе если (bool_conditionN) то

Соответственно, в случае, если ни одно из условий не окажется истинным, то ни одна команда не будет исполнена. Перейдем к примерам. Вернемся к ситуации с уровнем заряда на смартфоне. Напишем программу, которая будет более детально информировать владельца об уровне заряда его девайса:

 public static void main(String[] args) < String alert5 = "Я скоро отключусь, но помни меня бодрым"; String alert10 = "Я так скучаю по напряжению в моих жилах"; String alert20 = "Пора вспоминать, где лежит зарядка"; String alert30 = "Псс, пришло время экономить"; String alert50 = "Хм, больше половины израсходовали"; String alert75 = "Всё в порядке, заряда больше половины"; String alert100 = "Я готов к приключениям, если что.."; String illegalValue = "Такс, кто-то ввел некорректное значение"; Scanner scanner = new Scanner(System.in); System.out.print("Сколько процентов заряда батареи осталось на вашем смартфоне?"); int a = scanner.nextInt(); if (a 100) < System.out.println(illegalValue); >else if (a < 5) < System.out.println(alert5); >else if (a < 10) < System.out.println(alert10); >else if (a < 20) < System.out.println(alert20); >else if (a < 30) < System.out.println(alert30); >else if (a < 50) < System.out.println(alert50); >else if (a < 75) < System.out.println(alert75); >else if (a > 

К примеру в данном случае, если пользователь введет 15, то программа выведет на экран: “Пора вспоминать, где лежит зарядка”. Несмотря на то, что 15 меньше и 30 и 50 и 75 и 100, вывод на экран будет только 1. Напишем еще одно приложение, которое будет печатать в консоль, какой сегодня день недели:

 public static void main(String[] args) < // Определим текущий день недели DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek(); if (dayOfWeek == DayOfWeek.SUNDAY) < System.out.println("Сегодня воскресенье"); >else if (dayOfWeek == DayOfWeek.MONDAY) < System.out.println("Сегодня понедельник"); >else if (dayOfWeek == DayOfWeek.TUESDAY) < System.out.println("Сегодня вторник"); >else if (dayOfWeek == DayOfWeek.WEDNESDAY) < System.out.println("Сегодня среда"); >else if (dayOfWeek == DayOfWeek.THURSDAY) < System.out.println("Сегодня четверг"); >else if (dayOfWeek == DayOfWeek.FRIDAY) < System.out.println("Сегодня пятница"); >else if (dayOfWeek == DayOfWeek.SATURDAY) < System.out.println("Сегодня суббота"); >> 

Удобно конечно, но в глазах немного рябит от обилия однообразного текста. В ситуациях, когда у нас имеются большое количество вариантов лучше использовать оператор, речь о котором пойдет ниже.

switch-case

Альтернативой жирным if с большим количеством ветвей служит оператор switch-case . Данный оператор как бы говорит “Так, у нас есть вот такая вот переменная. Смотрите, в случае, если её значение равно `x`, то делаем то-то и то-то, если ее значение равно `y`, то делаем по-другому, а если ничему не равно из вышеперечисленного, просто делаем вот так… ” Данный оператор обладает следующей структурой.

  • byte and Byte
  • short and Short
  • int and Integer
  • char and Character
  • enum
  • String

Стоит обратить внимание: между `case valueX:` и `case valueY:` нет оператора break . Здесь, если argument будет равен value1 , выполнится statement1 . А если argument будет равен valueX либо valueY , выполнится statementXY . Разбавим тяжелую для восприятия теорию на легкую для восприятия практику. Перепишем пример с днями недели с использованием оператора switch-case .

 public static void main(String[] args) < // Определим текущий день недели DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek(); switch (dayOfWeek) < case SUNDAY: System.out.println("Сегодня воскресенье"); break; case MONDAY: System.out.println("Сегодня понедельник"); break; case TUESDAY: System.out.println("Сегодня вторник"); break; case WEDNESDAY: System.out.println("Сегодня среда"); break; case THURSDAY: System.out.println("Сегодня четверг"); break; case FRIDAY: System.out.println("Сегодня пятница"); break; case SATURDAY: System.out.println("Сегодня суббота"); break; >> 

Теперь напишем программу, которая выводит информацию о том, является ли сегодняшний день будним днем или выходным, используя оператор switch-case .

 public static void main(String[] args) < // Определим текущий день недели DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek(); switch (dayOfWeek) < case SUNDAY: case SATURDAY: System.out.println("Сегодня выходной"); break; case FRIDAY: System.out.println("Завтра выходной"); break; default: System.out.println("Сегодня рабочий день"); break; >> 

Немного поясним. В данной программе мы получаем enum DayOfWeek , который обозначает текущий день недели. Далее мы смотрим, равняется ли значение нашей переменной dayOfWeek значениям SUNDAY либо SATURDAY . В случае, если это так, программа выводит “Сегодня выходной”. Если же нет, то мы проверяем, равняется ли значение переменной dayOfWeek значению FRIDAY . В случае, если это так, программа выводит “Завтра выходной”. Если же и в этом случае нет, то вариантов у нас немного, любой оставшийся день является будним днем, поэтому по умолчанию, если сегодня НЕ пятница, НЕ суббота и НЕ воскресение программа выведет “Сегодня рабочий день”.

Заключение

Источник

Читайте также:  font-weight
Оцените статью