为什么会出现以下代码:
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");
}
}
给出错误:
继续循环
答案 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)
因为你在循环之外有一个continue
。 continue
用于跳回到循环的开头,但是在该代码中没有任何循环。您想要突破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);}
}