时间:2010-03-26 07:44:21

标签: java switch-statement continue

为什么会出现以下代码:

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

给出错误:

  

继续循环

7 个答案:

答案 0 :(得分:17)

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

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

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

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

编辑: 在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

答案 1 :(得分:8)

答案 2 :(得分:6)

因为你在循环之外有一个continuecontinue用于跳回到循环的开头,但是在该代码中没有任何循环。您想要突破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");
    }
}

还有一种思想流派认为default条件应始终在最后。这不是 的要求,只是一种相当广泛使用的惯例。

答案 3 :(得分:2)

答案 4 :(得分:0)

答案 5 :(得分:0)

答案 6 :(得分:0)

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