Перейти к содержимому

Как задать несколько условий в if java

  • автор:

Оператор if

Условный оператор if часто применяется программистами и имеется во всех языках программирования. Оператор if позволяет вашей программе в зависимости от условий выполнить оператор или группу операторов, основываясь на значении булевой переменной или выражения. Оператор if является основным оператором выбора в Java и позволяет выборочно изменять ход выполнения программы — и это одно из основных отличий между программированием и простым вычислением.

Оператор if начинается с ключевого слова if. Ключевое слово if должно сопровождаться булевым выражением, заключённым в скобки. Самая простая форма выглядит так:

 if (условие) оператор; // если условие истинно, то выполняется оператор 

Здесь условие — это булево выражение, имеющее значение true или false. Если условие истинно, то оператор или группа операторов выполняется, если ложно, то оператор не выполняется. Очень часто булево выражение в операторе if содержит какое-нибудь сравнение, но можно использовать булеву переменную или константу

 // Если кот голоден if (isHungry) 

Оператор if продолжается заключенным в фигурные скобки фрагментом, который называют блоком операторов. Если используется только один оператор, то фигурные скобки можно опустить. Но практика показывает, что лучше их всегда использовать, особенно в сложных проектах, когда постоянно приходится что-то переделывать.

Напишем следующий пример:

 if (2 * 2 == 5)

Как вы думаете, что появится на экране? Правильно, ничего, так как оператор не будет выполняться, потому что условие 2 * 2 == 5 является ложным.

Обратите внимание, что оператор равенства состоит из двух символов знака равно. Об этом часто забывают начинающие программисты.

Вот список операторов, которые можно использовать в условных выражениях (не ставьте пробел между двумя символами и соблюдайте их очерёдность):

Оператор Описание
Меньше чем
Меньше или равно
> Больше чем
>= Больше или равно
== Равно
!= Не равно

Результат сравнения удобно использовать для изменения логики программы. Например, если кот голоден, то накормить его. Или если число нечётное, то сделать его чётным.

 if(number % 2 != 0) ++number; 

Существует расширенный вариант оператора if с использованием ключевого слова else:

if (условие) оператор; // если условие истинно, то выполняется первый оператор else оператор; // если условие ложно, то выполняется оператор после else

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

if (условие) < оператор1; оператор2; >else

Обе части оператора if и else не могут выполняться одновременно. А условное выражение, управляющее оператором if должно возвращать булево значение.

Возьмём пример из жизни. Выйдем на Манежную площадь, где собрались люди, поддерживающие Путина. У митингующих можно встретить плакат:

Если не Путин, то кот

Попробуем перевести его на язык Java:

 String who = mResultEditText.getText().toString(); if (!who.equals("Putin")) who = "Cat"; else who = "Putin"; mResultEditText.setText(who); 

Запустите программу и пробуйте завести любые фамилии политиков, а затем щелкайте на кнопке. Вы увидите, что при вводе любой фамилии кроме Putin, президентом будет кот.

Вложенные операторы if

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

if(i == 10) < if(j < 20) a = b; if(k >100) c = d; else a = c; // else относится к if(k > 100) > else a = d; // else относится к if(i == 10)

Цепочка операторов if-else-if

Часто используется цепочка операторов if-else-if — конструкция, состоящая из вложенных операторов if:

if (condition) statement; else if (condition) statement; else if (condition) statement; . . . else statement;

Условные выражения оцениваются сверху вниз. Как только найдено условие, принимающее значение true, выполняется ассоциированный с этим условием оператор, а остальная часть цепочки пропускается. Если ни одно из условий не принимает значение true, то выполняется последний оператор else, который можно рассматривать как оператор по умолчанию. Если же последний оператор else отсутствует, а все условные выражения принимают значение false, то программа не выполняет никаких действий.

Напишем пример, вычисляющий время года, когда коты поют свои мартовские песни.

 int month = 3; // март String season; // время года if(month == 1 || month == 2 || month == 12) season = "Зимушка-зима"; else if (month == 3 || month == 4 || month == 5) season = "Весна"; else if (month == 6 || month == 7 || month == 8) season = "Лето"; else if (month == 9 || month == 10 || month == 11) season = "Осень"; else season = "Вы с какой планеты?"; mInfoTextView.setText("Мартовские песни коты поют, когда на дворе " + season); 

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

Ещё про котов (котов не бывает много). В зависимости от имени кота получаем его описание.

 String catName = "Рыжик"; if (catName == "Пушок") < System.out.println("Ваш котёнок пушистенький"); >else if (catName == "Рыжик") < System.out.println("Ваш котёнок рыженький"); >else

Гулять так гулять. Усложняем условия.

 String[] cats = ; Random random = new Random(); String catName = cats[random.nextInt(4)]; if (catName.equals("Пушок")) < System.out.println("Ваш котёнок пушистенький"); >else if (catName.equals("Рыжик")) < System.out.println("Ваш котёнок рыженький"); >else if (catName.equals("Лохматик")) < System.out.println("Ваш котёнок лохматенький"); >else if (catName.equals("Чудик")) < System.out.println("Ваш котёнок чудной"); >else

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

Продвинутые программисты часто используют тернарный оператор ? : вместо if-else. Тернарный оператор использует три операнда и записывается в форме:

 логическое_условие ? выражение1 : выражение2 

Ternary operator

Знак вопроса является переходом к блокам. Как видим, после вопросительного знака идут два блока. Если в условии получаем True, то используем первый блок. Если в условии у нас получается False, то используем второй блок.

Например, нужно вычислить, какое из двух чисел больше и занести результат в третью переменную:

 int largerNum; int lowNum = 9; int highNum = 27; if(lowNum < highNum) // если первое число меньше второго < largerNum = highNum; >else < // иначе largerNum = lowNum; >

При тернарном варианте код будет следующим:

 int lowNum = 9; int highNum = 27; int largerNum = lowNum < highNum ? highNum : lowNum; 

Сравниваем два заданных числа. Так как 9 меньше 27, то берём выражение из первого блока, т.е. highNum.

Нельзя сказать, что такой код слишком читаем, поэтому можно не использовать в своей практике.

Android Studio

Если вы используете if, то делайте это следующим образом. Сначала напишите само булево выражение для проверки, например, (5 + 4 > 2), потом ставьте точку и студия предложит вам вариант с if - соглашаемся и получаем готовое выражение с фигурными скобками. Экономьте своё время.

#6 – Условные конструкции (if-else, switch-case)

#6 – Условные конструкции (if-else, switch-case)

Условные конструкции позволяют выполнить проверку и в зависимости от результата произвести выполнение определенного участка кода. За урок мы научимся использовать конструкцию if-else, а также switch-case в языке Java.

Видеоурок

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

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

За счёт if else можно проверить одно или несколько условий и в случае их успешной проверки будет выполнен один, иначе другой.

int a = 2, b = 10; if (a == b) < // Если a будет равным b, тогда будет выполнен код // Здесь код который будет выполнен // Если все одна строка кода, то фигурные скобки <>// можно не ставить > else if (a else < // Этот код сработает, если другие условия не будет выполнено >

Вы можете прописать структуру лишь с одним условием if , а можете дописать в неё сколько-угодно вложенных условий else if .

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

Если необходимо проверить несколько условий в одном операторе, то можно воспользоваться логическим «и» или же логическим «или»:

if (a != b && a > b) < // Код будет выполнен, если и первое, и второе условие // окажутся верными >if (a < b || a == b) < // Код будет выполнен, если или первое, или второе условие // окажется верным >

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

Конструкция case обладает более удобным форматом для проверки множественных условий на совпадение значения. В конструкцию записывается переменная, что проверяется, а также значения на которые происходит проверка.

int x = 23; switch (x) < // Проверяем переменную x case 1: // Если переменная будет равна 1, то здесь сработает код // Может быть множество строк, а не только одна System.out.print ("Переменная равна 1"); break; // Указываем конец для кода для этой проверки case 56: // Если переменная будет равна 56, то здесь сработает код // Может быть множество строк, а не только одна System.out.print ("Переменная равна 56"); break; // Указываем конец для кода для этой проверки // По аналогии таких проверок может быть множество // Также можно добавить проверку, которая сработает в случае // если все остальные проверки не сработают default: System.out.print ("Что-то другое"); break; // Можно и не ставить, так как это последние условие >

Тернарная операция

Это сокращенная форма if else . Записывается следующим образом:

int x = 3, a = 12; int res = x < a ? (x + a) : (x - a); System.out.println(res);

Мы проверяем, если "x" будет меньше за "a", то мы в переменную res устанавливаем их сумму, иначе - их разницу.

Весь код будет доступен после подписки на проект!

Задание к уроку

Оператор switch case

Создайте условный оператор switch case для проверки числовой переменной.

  • Если переменная равна 3 - выведите в консоль надпись "Три";
  • Переменная равна 7 - выведите надпись "Семь";
  • Для всего остального выведите надпись "Что-то другое".

Посмотреть ответ

Вот код решения подобной задачи:

int a = 11; switch (a)

Получить остальные домашние задания можно после подписки на проект

Большое задание по курсу

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

Также стоит посмотреть

Фреймворк Next JS / Изучение NextJS для начинающих

Разработка Android программы. Создание чата

Практика React JS / Разработка магазина (eCommerce)

Изучение библиотек jQuery

Уроки Vue.js для начинающих

Разработка Андроид программы с базой данных

Комментарии (8)

Michael 26 июля 2023 в 23:14

Добрый день! Мне не очень понятно почему автор ролика используют тип данных "int" вместо "char". То есть "int a = 15, b = 10", так как часто используется для работы с символами.

Bruh 30 ноября 2023 в 10:07

Тебе в ролике объяснили что в калькуляторе если не будет этой строчики то все значения которые ты ввел в switch case они игнорятся и срабатывает default который ты прописал в конце switch case. Это происходит потому что переменной действие значения не имее и система обрабатыет пустоту а эту пустоту ты в switch case конечно же не прописывал и о Чудо Ошибка. Поэтому нужна эта строчка. Надеюсь помог и объяснил!

Sponge 18 декабря 2022 в 14:38

А почему сначала нельзя ввести первое число, затем операцию и второе число?

Gantz 14 ноября 2022 в 18:45

Извините, но ответ на задание кажется каким-то неполным.
Если я копирую код, то при исполнении программы сразу выскакивает default, но если дополнить код строкой
int x = scan.nextInt(); то всё срабатывает

User 09 ноября 2022 в 19:07

Объясните, пожалуйста, в Задании к уроку первую строку: int a = 11; - что это? Почему 11?

Gantz 13 ноября 2022 в 21:42

значит, что это любое число, которое не равно 3 и 7. могло быть хоть 100500. Для того, чтобы вывести "Что-то другое" Если бы поставили int а = 3, то первый же кейс подтвердил бы, что число == 3. Надеюсь понятно объяснил..я так это понял

Сергей 23 октября 2022 в 18:34

Свой калькулятор
//здесь мы объявляем переменную и разве знчение не получаем от пользователя
String action = scanner.nextLine();
// зачем нам эта строка?
action = scanner.nextLine();

Gantz 14 ноября 2022 в 18:47

Я тоже ничего не понял из этого блока

itProger 14 ноября 2022 в 18:56

В Джава предпоследние получение данных от пользователя всегда засчитываем еще как значение для последнего получения. Чтобы действительно получить данные от пользователя и указать их в качестве значение для action, то необходимо выполнить доволи глупую вещь – получить данные два раза scanner.nextLine() 🙂

Bruh 30 ноября 2023 в 10:08

Ребята в ролик гляньте эту часть про switch case и поймете что там будет не коректно работать калькулятор.

артем 24 августа 2022 в 21:06

что делать если даже условие не правильное все равно выходит надпись (скобки поставил)?

Валентина 01 июня 2022 в 22:38

Скажите как оплатить подписку из Белоруссии, почтовый ящик [email protected]

itProger 02 июня 2022 в 08:12

Здравствуйте!
Оплата подписки здесь: https://itproger.com/reg. Если возникнут сложности, то напишите консультанту на странице с покупкой.

Dima 16 мая 2022 в 20:34

Очень полезный и крутой курс, очень понятно всё объяснили + практика даёт возможность очень быстро и хорошо всё выучить!
Огромное спасибо!

itProger 16 мая 2022 в 20:49

Условные операторы в Java: if-else, switch и «Элвис»

Прокатимся по ключевым операторам выбора в языке программирования Джава, начиная if-else и заканчивая обновлённым switch в Java 12.

Чтобы эффективно работать с условными операторами на языке Java, необходимо знать, какими они бывают и для каких сценариев подходят. Обсудим это и некоторые нововведения из Java 13.

Условный оператор if

Оператор if позволяет задать условие, в соответствии с которым дальнейшая часть программы может быть выполнена. Это основной оператор выбора, который используется в языке Java. Он начинается с ключевого слова if и продолжается булевым выражением — условием, заключённым в круглые скобки.

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

if(2 * 2 == 4)

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

Программа выполняется 

Условный оператор if-else в Java

else в языке Java означает «в ином случае». То есть если условие if не является истинным, выводится то, что в блоке else :

if(2 * 2 == 5) < System.out.println("Программа выполняется"); >else
Условие ошибочно 

Это же сработает и без ключевого слова else , но чтобы код был читабельным и логичным, не следует пренебрегать else , как это сделано в следующем примере:

if(2 * 2 == 5) < System.out.println("Программа выполняется"); >System.out.println("Условие ошибочно"); 

А теперь давайте создадим несколько условий с использованием конструкции if-else . Выглядит это таким образом:

int a = 20; if(a == 10) < System.out.println("a = 10"); >else if(a == 15) < System.out.println("a = 15"); >else if(a == 20) < System.out.println("a = 20"); >else
a = 20 

Как видим, только третье условие истинно, поэтому выводится именно a = 20 , а все остальные блоки игнорируются.

Вложенный if

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

int a = 20; int b = 5; if(a == 20) < System.out.println("a = 20"); if(b == 5)< System.out.println("b = 5"); >> 
a = 20 b = 5 

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

«Элвис»

По сути, это сокращенный вариант if-else . Элвисом его прозвали за конструкцию, которая напоминает причёску короля рок-н-ролла — ?: . Данный оператор также принято называть тернарным. Он требует три операнда и позволяет писать меньше кода для простых условий.

Само выражение будет выглядеть следующим образом:

int a = 20; int b = 5; String answer = (a > b) ? "Условие верно" : "Условие ошибочно"; System.out.println(answer); 
Условие верно 

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

Условный оператор switch в Java

Оператор выбора switch позволяет сравнивать переменную как с одним, так и с несколькими значениями. Общая форма написания выглядит следующим образом:

switch(выражение) < case значение1: // Блок кода 1 break; case значение2: // Блок кода 2 break; case значениеN: // Блок кода N break; default : // Блок кода для default > 

Рассмотрим распространённый пример с днями недели:

public class Main < //Создадим простое перечисление дней недели private static enum DayOTheWeek< MON, TUE, WED, THU, FRI, SAT, SUN >public static void main(String[] args) < //Выбираем понедельник (MON) var dayOfTheWeek= DayOTheWeek.MON; switch (dayOfTheWeek)< case MON: System.out.println("Понедельник"); break; case TUE: System.out.println("Вторник"); break; default: System.out.println("Другой день недели"); >> > 
Понедельник 

break при этом прерывает процесс проверки, поскольку соответствие условия уже найдено. Но начиная с Java 13, вместо break в условном операторе switch правильнее использовать yield — ключевое слово, которое не только завершает проверку, но и возвращает значение блока.

Кроме того, с 12 версии Java конструкция switch-case также претерпела некоторые изменения. Если вы используете в работе IntelliJ IDEA, данная среда разработки сама подскажет, как оптимизировать switch-case под новые версии.

Вот преобразованный код из нашего примера с некоторыми изменениями:

public class Main < private static enum DayOTheWeek< MON, TUE, WED, THU, FRI, SAT, SUN >public static void main(String[] args) < //В этот раз выберем вторник var dayOfTheWeek= DayOTheWeek.TUE; String result = switch (dayOfTheWeek)< case MON ->"Понедельник"; case TUE, WED, THU, FRI -> < yield "Любой будний день, кроме понедельника."; >default -> "Выходной день"; >; System.out.println(result); > > 
Любой будний день, кроме понедельника. 

Задачи на условные операторы Java

Определите, что выведут в консоль следующие примеры, без проверки в компиляторе.

1. В переменной min лежит число от 0 до 59. Определите в какую четверть часа попадает это число (в первую, вторую, третью или четвертую):

int min = 10; if(min >= 0 && min else if(min >= 15 && min else if(min >= 31 && min else

2. Что выведет следующий код:

int month = 3; String monthString; switch (month) < case 1: monthString = "Январь"; break; case 2: monthString = "Февраль"; break; case 3: monthString = "Март"; break; case 4: monthString = "Апрель"; break; case 5: monthString = "Май"; break; case 6: monthString = "Июнь"; break; case 7: monthString = "Июль"; break; case 8: monthString = "Август"; break; case 9: monthString = "Сентябрь"; break; case 10: monthString = "Октябрь"; break; case 11: monthString = "Ноябрь"; break; case 12: monthString = "Декабрь"; break; default: monthString = "Не знаем такого"; break; >System.out.println(monthString); 

3. Какое значение будет присвоено переменной k :

int i = -10 * -1 + (-2); int k = i < 0 ? -i : i; System.out.println(k);

Пишите свои ответы к задачам по условным операторам в Java.

Как задать несколько условий в if java

Одним из фундаментальных элементов многих языков программирования являются условные конструкции . Данные конструкции позволяют направить работу программы по одному из путей в зависимости от определенных условий.

В языке Java используются следующие условные конструкции: if..else и switch..case

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

Выражение if/else проверяет истинность некоторого условия и в зависимости от результатов проверки выполняет определенный код:

int num1 = 6; int num2 = 4; if(num1>num2)

После ключевого слова if ставится условие. И если это условие выполняется, то срабатывает код, который помещен в далее в блоке if после фигурных скобок. В качестве условий выступает операция сравнения двух чисел.

Так как, в данном случае первое число больше второго, то выражение num1 > num2 истинно и возвращает значение true . Следовательно, управление переходит в блок кода после фигурных скобок и начинает выполнять содержащиеся там инструкции, а конкретно метод System.out.println("Первое число больше второго"); . Если бы первое число оказалось бы меньше второго или равно ему, то инструкции в блоке if не выполнялись бы.

Но что, если мы захотим, чтобы при несоблюдении условия также выполнялись какие-либо действия? В этом случае мы можем добавить блок else :

int num1 = 6; int num2 = 4; if(num1>num2) < System.out.println("Первое число больше второго"); >else

Но при сравнении чисел мы можем насчитать три состояния: первое число больше второго, первое число меньше второго и числа равны. С помощью выражения else if , мы можем обрабатывать дополнительные условия:

int num1 = 6; int num2 = 8; if(num1>num2) < System.out.println("Первое число больше второго"); >else if(num1 else

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

int num1 = 8; int num2 = 6; if(num1 > num2 && num1>7)

Здесь блок if будет выполняться, если num1 > num2 равно true и одновременно num1>7 равно true .

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

Конструкция switch/case аналогична конструкции if/else , так как позволяет обработать сразу несколько условий:

int num = 8; switch(num)

После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после операторов сase . И если совпадение найдено, то будет выполняет соответствующий блок сase .

В конце блока сase ставится оператор break , чтобы избежать выполнения других блоков. Например, если бы убрали оператор break в следующем случае:

case 8: System.out.println("число равно 8"); num++; case 9: System.out.println("число равно 9"); break;

то выполнился бы блок case 8 , (поскольку переменная num равна 8). Но так как в этом блоке оператор break отсутствует, то начал бы выполняться блок case 9 .

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

Также мы можем определить одно действие сразу для нескольких блоков case подряд:

int num = 3; int output = 0; switch(num) < case 1: output = 3; break; case 2: case 3: case 4: output = 6; break; case 5: output = 12; break; default: output = 24; >System.out.println(output);

Тернарная операция

Тернарную операция имеет следующий синтаксис: [первый операнд - условие] ? [второй операнд] : [третий операнд] . Таким образом, в этой операции участвуют сразу три операнда. В зависимости от условия тернарная операция возвращает второй или третий операнд: если условие равно true , то возвращается второй операнд; если условие равно false , то третий. Например:

int x=3; int y=2; int z = x

  • Вопросы для самопроверки
  • Упражнения

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *