Почему не может я использовать 'продолжиться' в операторе переключения в Java?

Почему это что следующий код:

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");
    }
}

Дает ошибку:

продолжите за пределами цикла

5
задан James P. 14 February 2012 в 10:18
поделиться

7 ответов

Перебор является стандартным поведением для оператора 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

17
ответ дан 18 December 2019 в 05:43
поделиться

Вы используете continue , где вы должны использовать break

0
ответ дан 18 December 2019 в 05:43
поделиться

Потому что у вас есть 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");
    }
}

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

5
ответ дан 18 December 2019 в 05:43
поделиться

продолжить внутренний переключатель??!!! только 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");
     }
}
1
ответ дан 18 December 2019 в 05:43
поделиться

Не следует ли использовать break вместо continue?

0
ответ дан 18 December 2019 в 05:43
поделиться

Оператор continue может использоваться в циклах, а не в коммутаторе. Что вам, вероятно, нужно, так это перерыв .

7
ответ дан 18 December 2019 в 05:43
поделиться

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);}
}
0
ответ дан 18 December 2019 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: