日期:2014-05-20  浏览次数:20654 次

switch的小问题,在线等
public class SwitchTest { 
public static void main (String []args) {
System.out.println (switchIt(4)); 
}
public static int switchIt(int x) {
int j = 1; 
switch (x) { 
case 1: j++; 
case 2: j++; 
case 3: j++; 
case 4: j++;
case 5: j++; 
default:j++; 
}
return j + x; 
}



这段代码中,得到的结果为什么会是8呢,thanks

------解决方案--------------------
因为case里面你没有加break;所以case 4、5、default都会执行!
------解决方案--------------------
探讨

因为case里面你没有加break;所以case 4、5、default都会执行!

------解决方案--------------------
额 你没个case 后面不加break啊
------解决方案--------------------
探讨
因为case里面你没有加break;所以case 4、5、default都会执行!

------解决方案--------------------
我也搞不明白了
x = 4, 不等于 5 ,不符合case5呀,为啥还执行 case 5 和后面的呀
------解决方案--------------------
+1 你debug一下就知道了
探讨
引用:
因为case里面你没有加break;所以case 4、5、default都会执行!

+1

------解决方案--------------------
探讨

+1 你debug一下就知道了
引用:
引用:
因为case里面你没有加break;所以case 4、5、default都会执行!

+1

------解决方案--------------------
自己多写几个试试就知道了,实在不行在每个case后输出一下,看看对应的值
------解决方案--------------------
break的原因
------解决方案--------------------
执行完case 4的时候j的值是2,
执行完case 5的时候j的值是3,
执行完defaulat的时候j的值是4,
所以返回值是4+4=8
------解决方案--------------------
没有break程序会顺序往下走,j被加了3次为4,4+4=8
------解决方案--------------------
探讨
引用:

因为case里面你没有加break;所以case 4、5、default都会执行!

+1

------解决方案--------------------
正常来说.switch格式应该是每个case结尾都有break作为结束,如果没有就会先匹配case后的数字,只要匹配到就会执行后面的全部代码。
------解决方案--------------------
没有加break 后面不符合的也会按顺序执行下去。。。
------解决方案--------------------
要break;不break后面的代码继续执行 到switch结束j的值是7 在加1就是8
------解决方案--------------------
动手调试,学东西就要多调试代码
------解决方案--------------------
设置个断点,点debug按钮,一步一步调试
------解决方案--------------------
没加break的原因
------解决方案--------------------
探讨

因为case里面你没有加break;所以case 4、5、default都会执行!

------解决方案--------------------
break;跳出来就不加了

多做switch练习