Почему это что следующий код:
class swi
{
public static void main(String[] args)
{
int a=98;
switch(a)
{
default:{ System.out.println("default");continue;}
case 'b':{ System.out.println(a); continue;}
case 'a':{ System.out.println(a);}
}
System.out.println("Switch Completed");
}
}
Дает ошибку:
продолжите за пределами цикла
Перебор является стандартным поведением для оператора switch, поэтому использование continue в операторе switch не имеет смысла. Оператор continue используется только в циклах for/while/do..while.
Исходя из моего понимания ваших намерений, вы, вероятно, хотите написать:
System.out.println("default");
if ( (a == 'a') || (a == 'b') ){
System.out.println(a);
}
Я бы также предложил поместить условие по умолчанию в самый конец.
EDIT: Не совсем верно, что операторы continue нельзя использовать внутри операторов switch. Оператор continue (в идеале помеченный) вполне допустим. Например:
public class Main {
public static void main(String[] args) {
loop:
for (int i=0; i<10; i++) {
switch (i) {
case 1:
case 3:
case 5:
case 7:
case 9:
continue loop;
}
System.out.println(i);
}
}
}
Это приведет к следующему результату: 0 2 4 6 8
Вы используете continue
, где вы должны использовать break
Потому что у вас есть continue
вне цикла . continue
предназначен для возврата к началу цикла, но у вас нет никакого цикла в этом коде. Для выхода из блока case switch
нужно ключевое слово break
(см. Ниже).
Также нет необходимости помещать каждый блок case в фигурные скобки (если вы не хотите, чтобы в них были переменные с локальной областью видимости).
Что-то вроде этого было бы более стандартным:
class swi22
{
public static void main(String[] args)
{
int a=98;
switch(a)
{
default:
System.out.println("default");
break;
case 'b':
System.out.println(a);
break;
case 'a':
System.out.println(a);
break;
}
System.out.println("Switch Completed");
}
}
Есть также школа мысли, согласно которой условие по умолчанию
всегда должно быть в конце. Это не требование, а просто довольно широко используемое соглашение.
продолжить
внутренний переключатель??!!! только break
можно держать внутри переключателя.!
Ваш код должен быть,
class swi22
{
public static void main(String[] args)
{
int a=98;
switch(a)
{
default:{ System.out.println("default");break;}
case 'b':{ System.out.println(a); break;}
case 'a':{ System.out.println(a);}
}
System.out.println("Switch Completed");
}
}
Оператор continue
может использоваться в циклах, а не в коммутаторе. Что вам, вероятно, нужно, так это перерыв
.
continue
просто переходит непосредственно к следующей итерации цикла.
break
используется для разрыва петель и переключателей.
Используйте break;
вместо continue;
Continue:
for(x = 0; x < 10; x++)
{
if(x == 3)
continue;
else
DoIterativeWork();
}
Switch:
switch(a)
{
default:{ System.out.println("default"); break;}
case 'b':{ System.out.println(a); break;}
case 'a':{ System.out.println(a);}
}