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练习