Условный оператор if в Java. Оператор switch
Данная статья:
- написана командой Vertex Academy. Надеемся, что она Вам будет полезна. Приятного прочтения!
- это одна из статей из нашего "Самоучителя по Java"
В Java есть так называемые конструкции ветвления:
- Условный оператор if
- Оператор switch
Примечание: Для тех, кто только начинает изучать Java, достаточно знать условный оператор if, поскольку он используется очень часто. Оператор switch используется намного реже.
Чтобы лучше понять, что такое конструкции ветвления в Java, представьте, что Вы стоите на раздорожье. Картинка Вам в помощь.
Если налево – попадёшь в офис
Если прямо – попадёшь в спортзал
Если направо – попадёшь на пляж
Так вот, запомните: по такому же принципу работает конструкция ветвления условный оператор if - это своеобразное раздорожье.
1 2 3 4 5 6 7 8 9 |
if (налево){ работаешь в офисе; } else if (прямо) { занимаешься спортом; } else { лежишь на пляже; } |
Общая форма условного оператора if в Java такая:
1 2 3 4 5 6 7 8 9 10 11 12 |
if (условие) { //действие(-я), которые выполняются, если условие истинно; } else if (условие) { //действие(-я), которые выполняются, если условие истинно; } else if (условие) { //действие(-я), которые выполняются, если условие истинно; } else { //действие(-я), которые выполняются, если условие истинно; } |
Обратите внимание, что:
- Оператор всегда начинается сос слова if, за которым всегда идут круглые скобки с условием.
- После круглых скобок никогда не ставится точка с запятой
- Для того, чтобы указать альтернативный вариант (если не выполняется, тогда...) использутся слово else.
- Если условий несколько, то каждое из них будет записываться через комбинацию else if, после которых в круглых скобках записывается альтернативное условие. Последний вариант (если не то, не то и не то, то...) записывается через else без условия.
Предлагаю решить несколько задач.
Задача №1
Необходимо написать программу, где бы пользователю предлагалось ввести число на выбор: 1, 2 или 3, а программа должна сказать, какое число ввёл пользователь: 1, 2, или 3.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.util.Scanner; // подключаем сканер class Test { public static void main (String [] args) { System.out.print ("Введите число 1, 2 или 3: "); Scanner inputFigure = new Scanner (System.in); int i = inputFigure.nextInt (); if ( i==1) { System.out.println ("Вы ввели число 1"); } else if (i==2) { System.out.println ("Вы ввели число 2"); } else if (i==3) { System.out.println ("Вы ввели число 3"); } else { System.out.println ("Вы ввели число не равное 1, 2 или 3"); } } } |
Комментарии:
1. В условии сказано, что пользователь должен ввести число на выбор: 1, 2 или 3. Соответственно, первое, что мы должны сделать - это предложить пользователю ввести число. Поэтому пишем в коде :
1 |
System.out.print ("Введите число 1, 2 или 3: "); |
2. Далее пользователь должен ввести число, а мы должны считать его с консоли. Для этого мы подключаем сканер с помощью вот этой строчки:
1 |
import java.util.Scanner; |
3. Далее с помощью сканера, а именно этих 2 строк, мы присваиваем в переменную i число, которое ввел пользователь:
1 2 |
Scanner inputFigure = new Scanner (System.in); int i = inputFigure.nextInt (); |
Если Вы не знаете, как работает сканер, то есть не понимаете эти 2 строчки, то прочитайте вот эту статью - "Работа со сканером в Java (ввод и вывод данных)"
4. Затем проверяем равно ли i 1. Если i равно 1, будет выведено на экран сообщение: "Вы ввели число 1"
1 2 3 |
if ( i==1) { System.out.println ("Вы ввели число 1"); { |
5. Если i не равно 1, то проверяем равно ли i 2. Если i равно 2, будет выведено на экран сообщение: "Вы ввели число 2"
1 2 3 |
else if (i==2) { System.out.println ("Вы ввели число 2"); } |
6. Если i не равно 1 или 2, то проверяется равно ли i 3. Если i равно 3, будет выведено сообщение на экран: "Вы ввели число 3"
1 2 3 |
else if (i==3) { System.out.println ("Вы ввели число 3"); } |
7. Если же все предыдущие шаги оказались false (то есть i не равно ни 1, ни 2, ни 3), оператор перейдёт к выполнению кода, который написан в else и на экран будет выведено сообщение: "Вы ввели число не равное 1, 2 или 3"
1 2 3 |
else { System.out.println ("Вы ввели число не равное 1, 2 или 3"); } |
И оператор будет закончен. Конец программы.
Ещё раз обращаем внимание на то, что:
- Оператор всегда начинается сос слова if, за которым всегда идут круглые скобки с условием.
- После круглых скобок никогда не ставится точка с запятой
- Для того, чтобы указать альтернативный вариант (если не выполняется, тогда...) использутся слово else.
- Если условий несколько, то каждое из них будет записываться через комбинацию else if, после которых в круглых скобках записывается альтернативное условие. Последний вариант (если не то, не то и не то, то...) записывается через else без условия.
Вы уже могли убедиться в этом на примере решённой задачи №1
8. Также хотим обратить Ваше внимание на то, что, например, в if ( i ==1) мы использовали двойное равенство == . Очень распространенная ошибка у новичков вместо == использовать =.
Напоминаем:
- когда присваивается значение переменной, используем =.
Например:
int i = 1;
int k =7;
- когда проверяется значение переменной на равенство, например, равна ли переменная i 1, используется ==. И именно поэтому мы писали в коде if ( i ==1) и т.д.
Задача №2
Необходимо написать программу, где бы пользователю предлагалось ввести число 1. Если пользователь ввёл число 1, программа должна вывести сообщение: "Вы ввели число 1". Если пользователь ввёл другое число, программа должна вывести такое сообщение: "Вы ввели число не равное 1"
Да, задача похожа на задачу №1. Сейчас Вы поймете зачем мы привели пример этой задачи.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import java.util.Scanner; // подключаем сканер class Test { public static void main (String [] args) { System.out.print ("Введите число 1: "); Scanner inputFigure = new Scanner (System.in); int i = inputFigure.nextInt (); if ( i==1) { System.out.println ("Вы ввели число 1"); } else { System.out.println ("Вы ввели число не равное 1"); } } } |
Комментарии:
В данной задаче мы проверяем намного меньше условий, нежели в задаче №1. И смотрите как выглядит конструкция if в данной задаче:
1 2 3 4 5 6 |
if ( i==1) { System.out.println ("Вы ввели число 1"); } else { System.out.println ("Вы ввели число не равное 1"); } |
У нас есть только if и else. Else if нет. Да-да, работает все то же правило:
- Оператор всегда начинается сос слова if, за которым всегда идут круглые скобки с условием.
- После круглых скобок никогда не ставится точка с запятой
- Для того, чтобы указать альтернативный вариант (если не выполняется, тогда...) использутся слово else.
- Если условий несколько, то каждое из них будет записываться через комбинацию else if, после которых в круглых скобках записывается альтернативное условие. Последний вариант (если не то, не то и не то, то...) записывается через else без условия.
И действительно, конструкция начинается с if, заканчивается else. Else if в данном примере нет, потому что мы проверяем только 1 условие if ( i ==1). Если бы проверяли 2 и более условий, как в задаче №1, то между if и else были бы else if.
Задача №3
Необходимо написать программу, где бы пользователю предлагалось ввести число 1. Если пользователь ввёл число 1, программа должна вывести сообщение: "Вы ввели число 1". Если пользователь ввёл другое число, программа вообще ничего не должна делать.
Да, эта задача похожа на задачу №2 - отличие только во второй части условия. Обратите внимание как решалась бы такая задача.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.Scanner; // подключаем сканер class Test { public static void main (String [] args) { System.out.print ("Введите число 1: "); Scanner inputFigure = new Scanner (System.in); int i = inputFigure.nextInt (); if ( i==1) { System.out.println ("Вы ввели число 1"); } } } |
Комментарии:
Как видно из решения задачи, есть if, но нет else
Почему так? Да потому что по условию данной задачи нам необходимо было, при условии true, выводить сообщение "Вы ввели число 1", при условии false необходимо было, чтоб программа больше ничего не делала. И поэтому мы не писали в данном коде else.
Оператор switch (или ещё называется ветвление с помощью переключателей)
Конструкции с операторами if else, предлагающими большое количество условных ветвлений, могут выглядеть очень громоздкими. Поэтому в тех случаях, когда необходимо повторять проверку одного и того же значения переменной, есть более элегантное решение с помощью оператора switch.
Смотрим на практике как работает оператор switch.
Задача №4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.Scanner; // импорт сканера class Test { public static void main(String args[]){ System.out.println("Введите 1, 2, 3 или 4"); Scanner scan = new Scanner(System.in); int number = scan.nextInt(); switch (number){ case 1: System.out.println ("Вы ввели число 1"); break; case 2: System.out.println ("Вы ввели число 2"); break; case 3: System.out.println ("Вы ввели число 3"); break; case 4: System.out.println ("Вы ввели число 4"); break; default: System.out.println("Вы ввели неправильное число"); } } } |
Если Вы попробуете запустить этот код на своём компьютере, то на консоли Вы увидите следующее:
Введите 1, 2, 3 или 4
Затем, если Вы, например, введёте число 1 , то на консоли будет следующее:
Введите 1, 2, 3 или 4
1
Вы ввели число 1
Если же Вы, например, введёте число 5, то на консоли будет следующее:
Введите 1, 2, 3 или 4
5
Вы ввели неправильное число
Комментарии:
Сначала предложили пользователю ввести числа: 1, 2, 3 или 4
1 |
System.out.println("Введите 1, 2, 3 или 4"); |
Затем подключили сканер с методом nextInt для целых чисел, потому что мы же ожидаем, что пользователь введёт 1, 2, 3 или 4, а это целые числа.
Затем проверяем значение переменной number
1 |
switch (number) |
И для этого прописываем все возможные значения number и код, который будет выполняться, при том или ином значении
1 2 3 4 |
case 1: System.out.println ("Вы ввели число 1"); break; case 2: System.out.println ("Вы ввели число 2"); break; case 3: System.out.println ("Вы ввели число 3"); break; case 4: System.out.println ("Вы ввели число 4"); break; |
Если же пользователь введёт целое число, которое не будет равно 1, 2, 3 или 4 (в нашем примере мы предположили, что пользователь ввёл 5), тогда отработает в коде вот эта строчка
1 |
default: System.out.println("Вы ввели неправильное число"); |
Важно: каждый case должен закрываться в конце с помощью break. Благодаря break программа прекращает выполнять код и выходит из условного оператора.
Общая форма оператора switch
1 2 3 4 5 6 7 8 9 10 11 12 13 |
switch (проверяемая-переменная){ case значение1: код-для-высполнения-при-переменная==значение1; break; case значение2: код-для-высполнения-при-переменная==значение2; break; case значение3: код-для-высполнения-при-переменная==значение3; break; default: код-для-выполнения-если-значение-переменной-не-предусмотрено-в-case; } |
Подытожим:
В Java есть так называемые конструкции ветвления:
- Условный оператор if
- Оператор switch
Общая форма условного оператора if в Java:
1 2 3 4 5 6 7 8 9 10 11 12 |
if (условие) { //действие(-я), которые выполняются, если условие истинно; } else if (условие) { //действие(-я), которые выполняются, если условие истинно; } else if (условие) { //действие(-я), которые выполняются, если условие истинно; } else { //действие(-я), которые выполняются, если условие истинно; } |
Также может быть в таком виде:
1 2 3 4 5 6 |
if (условие) { //действие(-я), которые выполняются, если условие истинно; } else (условие) { //действие(-я), которые выполняются, если условие истинно; } |
или в таком:
1 2 3 |
if (условие) { //действие(-я), которые выполняются, если условие истинно; } |
Общая форма оператора switch
1 2 3 4 5 6 7 8 9 10 11 12 13 |
switch (проверяемая-переменная){ case значение1: код-для-высполнения-при-переменная==значение1; break; case значение2: код-для-высполнения-при-переменная==значение2; break; case значение3: код-для-высполнения-при-переменная==значение3; break; default: код-для-выполнения-если-значение-переменной-не-предусмотрено-в-case; } |
Надеемся, что наша статья была Вам полезна. Также есть возможность записаться на наши курсы по Java в Киеве. Обучаем с нуля.
По всем вопросам звоните:
+38 050 205 77 99
+38 098 205 77 99
Или читайте информацию по нашим курсам Java c нуля у нас на сайте.