9

为什么是下面的代码:

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

给出错误:

在循环外继续

4

7 回答 7

23

失败是 switch 语句的标准行为,因此,在 switch 语句中使用 continue 没有意义。continue 语句仅用于 for/while/do..while 循环。

根据我对您意图的理解,您可能想写:

System.out.println("default");
if ( (a == 'a') || (a == 'b') ){
    System.out.println(a);
}

我还建议您将默认条件放在最后。

编辑:在 switch 语句中不能使用 continue 语句并不完全正确。(理想标记的)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

于 2010-03-26T07:52:22.257 回答
8

-Statementcontinue可以在循环中使用,而不是在 switch 中。你可能想要的是一个break.

于 2010-03-26T07:48:42.493 回答
6

因为你有continue一个循环的外部。continue用于跳转到循环的下一次迭代,跳过当前迭代的剩余部分。但是您在该代码中没有任何循环。您想要打破switchcase 块的是关键字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");
    }
}

还有一种观点认为default条件应该总是在最后。这不是一个要求,只是一个相当广泛使用的约定。

于 2010-03-26T07:47:06.323 回答
1

你不应该使用break而不是continue吗?

于 2010-03-26T07:46:50.193 回答
1

continue直接移动到循环的下一个迭代。

break用于打破循环和开关。

使用break;代替continue;

继续:

for(x = 0; x < 10; x++)
{
   if(x == 3)
     continue;
   else       
     DoIterativeWork();       
}

转变:

switch(a)
{
 default:{ System.out.println("default"); break;}
 case 'b':{ System.out.println(a); break;}
 case 'a':{ System.out.println(a);}
}
于 2010-03-26T07:49:04.523 回答
0

你正在使用continue你应该使用的地方break

于 2010-03-26T07:46:51.517 回答
-1

continue里面的开关???!!!只能break放在switch里面!

你的代码应该是,

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");
     }
}
于 2010-03-26T07:46:26.170 回答