Да. Переключатели разбивают шаблон оператора языкового блока, но это в основном из-за C/C++, из которого основан оператор switch, используемый Java.
Во всех трех языках, оператор переключатель принимает следующий вид:
switch(variable) {
case n:
statement 1;
statement n;
(optional) break;
case n+1:
statement 1;
statement n;
(optional) break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
Поскольку коммутатор заявление ломает традиционную картину языка, многие программисты завернуть их несколько операторов в случае использования традиционного стиля блока: { }
Это связано с тем, что большинство конструкций на всех трех языках допускают, чтобы оператор стиля блока рассматривался как один оператор, но оператор switch не требует, чтобы стиль блока выполнял несколько операторов в одном случае.
Без инструкции break, разделяющей каждый случай, будет «проваливаться» - если случай n был согласован и не имел перерыва, код под ним (случай n + 1) будет выполнен - если случай n + 1 не имел перерыва и был сопоставлен, будет выполняться код по умолчанию, если ни один из них не имел разрыва, при сопоставлении случая n будет выполняться код для случая n, case n + 1 и default.
По умолчанию является необязательным, и указывается действие по умолчанию для оператора switch для выполнения. Обычно условие по умолчанию является либо общим обработчиком, либо хорошим местом для генерирования исключения, если это значение не может быть логически иным, чем значения в инструкции switch.
Для иллюстрации переключатель заявление выполняющийся внутри переключателя заявление, посмотрите на этот надуманный пример:
String message = null;
int outerVariable = getOuterVariable();
switch(outerVariable) {
case n:
statement 1;
statement n;
break;
case n+1:
int innerVariable = getInnerVariable();
switch(innerVariable) {
case 1:
message = "IT WAS 1";
break;
default:
message = "WHY WOULD YOU DO THIS? OH THE HUMANITY!";
}
break;
// Optionally more statements
(optional) default:
statement 1;
statement n;
}
в то время, которое потребовалось вам, чтобы написать этот вопрос, который вы могли бы опробовали сами ... просто говорю ... –
Я думаю, что точка SO заключается в том, что людям * n не нужно писать код для проверки идеи. –
@ande_turner: no. SO здесь, чтобы отвечать на вопросы, а не делать что-то вместо людей. –