Java “为什么是错误的?”;案例;在「;“违约”;在switch语句中
如何可能输出为1002,为什么尽管存在不匹配,仍要执行最后一个案例Java “为什么是错误的?”;案例;在「;“违约”;在switch语句中,java,Java,如何可能输出为1002,为什么尽管存在不匹配,仍要执行最后一个案例 public class Main { public static void main(String[] args) { int i=0,j=0; switch (i) { case 2 : j++; default: j+=2; case 15 : j+=1000; } System.
public class Main {
public static void main(String[] args) {
int i=0,j=0;
switch (i) {
case 2 : j++;
default: j+=2;
case 15 : j+=1000;
}
System.out.println("j="+j);
}
}
因为您缺少
break代码>
如果我理解你的困惑,违约顺序并不重要。在下面的例子中
int i=15,j=0;
switch (i){
case 2 :
j++;
break;
case 4:
j+=10;
break;
default:
j+=2;
break;
case 15 :
j+=1000;
break;
}
j
将具有值1000
,即使默认值
早于案例15
您必须在案例块末尾中断。否则,所有后续案件也将被执行
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
int i=0,j=0;
switch (i){
case 2 : j++; break;
case 4: j+=10; break;
case 15 : j+=1000; break;
default: j+=2;
}
System.out.println("j="+j);
}
}
漏洞:
另一个有趣的问题是break语句。每个中断语句
终止封闭的switch语句。控制流继续进行
开关块后面的第一条语句。中断语句
是必要的,因为如果没有它们,开关块中的语句将失败
通过:在中执行匹配案例标签后的所有语句
序列,无论后续大小写标签的表达式如何,
直到遇到break语句
您的代码应该是:
case 2 : j++; break;
case 4: j+=10; break;
default: j+=2; break;
case 15: j+=1000;
}
您没有在每个案例中指定“break”关键字
应该是这样的:
switch (i){
case 2 :
j++;
break;
case 4:
j+=10;
break;
case 15 :
j+=1000;
break;
default:
j+=2;
break;
}
在这种情况下,情况2和情况4不是执行,而是默认值,情况15是,因此答案是1002。请输入中断语句以获得所需的结果
希望这有帮助
This is the output from the code:
August
September
October
November
December
switch (i){
case 2 :
j++;
break;
case 4:
j+=10;
break;
case 15 :
j+=1000;
break;
default:
j+=2;
break;
}