При написании программ возникают такие моменты, когда необходимо проводить сравнение, но заведомо известно с чем сравнивать или нужно, чтобы пользователь выбрал, например, определённую цифру из определённого диапазона (допустим, от 1 до 9).
Для реализации вышесказанного можно использовать условные операторы, но в таком случае получается громоздкая и неудобная конструкция, к тому же код получается не таким красивым.
Оператор switch() — это узконаправленный условный оператор. Модернизация и выжимка из обычных условных операторов. В нём происходит проверка значения переменной на совпадение с одним из предложенных заранее значений в контейнере case.
Контейнер case — это блок, в котором находится одно значение, с которым сравнивается значение переменной, и инструкция в виде программного кода, которая должна выполняться в случае совпадения значения переменной и значения контейнера case().
Конструкция из switch()…case широко используется при самых разных ситуациях.
Одна из таких ситуаций — создание меню в программе. Пользователь должен выбрать один из нескольких вариантов в меню, нажать соответствующую кнопку и программа обязана обработать соответствующим образом команду пользователя.
Зачастую конструкцию из switch()…case называют блоком выбора.
При работе с этим оператором необходимо следовать следующей инструкции (применяется для каждого блока выбора):
- Сначала в круглых скобках switch() размещается переменная, значение которой должно быть найдено среди значений, содержащихся в блоках case. Может быть использовано только один раз;
- Дальше прописывается контейнер case, в котором указывается значение, с которым идёт проверка на совпадение со значением переменной, указанной в скобках switch(). Каждая инструкция, записанная в case обязана быть закончена оператором break (благодаря ему происходит завершение проверки на совпадение). Должно быть использовано минимум один раз, предел не ограничен;
- Необходимо предусмотреть вариант, что ни одно из значений предложенных в case не будет совпадать со значением переменной указанной в switch(), в этом случае необходимо использовать контейнер default, ему не нужно указывать никакое значение, так как инструкции, записанные в него, выполняются в случае несовпадения значения переменной ни с одним из значений в контейнерах case. Можно не использовать, но в случае применения, использовать можно только один раз;
Проверка идёт последовательно сверху вниз. Поэтому каждая инструкция в контейнере case должна быть закончена оператором прерывания break.
В контейнере default оператор прерывания break не требуется, так как default самый последний, а значит, после него уже нечего проверять.
Реализуем ввод пользователя с клавиатуры и последующим выводом соответствующего сообщения.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sw = new Scanner(System.in); //создаём магию ввода System.out.print("Введите число: "); //пользователь должен ввести число int str = sw.nextInt(); //запись введённого числа в переменную switch (str){ //выбор согласно совпадению case 10: //если значение переменной равно 10, то System.out.println("Это 10"); //вывести на экран сообщение break; //выход из проверки (прерывание проверки) case 15: //если значение переменной равно 15, то System.out.println("Это 15"); //вывести на экран сообщение break; //выход из проверки (прерывание проверки) case 20: //если значение переменной равно 20, то System.out.println("Это 20"); //вывести на экран сообщение break; //выход из проверки (прерывание проверки) case 25: //если значение переменной равно 25, то System.out.println("Это 25"); //вывести на экран сообщение break; //выход из проверки (прерывание проверки) default: //если не было обнаружено совпадение, то System.out.println("Это DEFAULT"); //вывести на экран сообщение } } } |
Таким нехитрым образом мы разобрались с темой: «Оператор switch() … case на языке Java»!