黑马程序员技术交流社区

标题: 关于switch的题,请详细分析!谢谢 [打印本页]

作者: 无所谓啦    时间: 2014-5-29 11:07
标题: 关于switch的题,请详细分析!谢谢
public class TestSwitch{
public static void main(String[] args){
        int i =1;
        switch(i){
                case 1:
                i+=1;
                case 2:
                i=10;
                default:
                i=0;
        }
        System.out.println("i="+i);
        }
}    //输出结果为0,为什么,详细分析过程!


作者: code2014    时间: 2014-5-29 11:19
在switch语句中,只有遇到break或switch语句结束才会停。
虽然i=1符合case1,但是没有break,所以继续往下执行,直到遇到break或语句结束
作者: pengyu    时间: 2014-5-29 11:44
对的,需要使用break做控制的
作者: 小坏坏    时间: 2014-5-29 20:38
再每个case后加一个break
作者: yang1352546    时间: 2014-5-29 20:44
在switch语句中,要是没有break,就会执行完当前的语句后,一直往下执行,知道break或者把下面所的能执行的语句执行完才能结束,你的这个代码中由于没有break所以一直往下执行,最后的一个能执行的语句是 i=0;所以最后结果就是i=0
作者: 宋健敏    时间: 2014-5-29 20:48
你安照这个代码去运行一下
作者: 葛晓东    时间: 2014-5-29 20:51
虽然有case==1,但你这里木有break跳出,会一直运行到最后defalt,最后i=0,输出就是i=0了
作者: 宋健敏    时间: 2014-5-29 20:52
public class TestSwitch{
public static void main(String[] args){
        int i =1;
        switch(i){
                case 1:
               {
                i+=1;
               break;
               }
                case 2:
                {
                i=10;
               break;
               }
                default:
                i=0;
        }
        System.out.println("i="+i);
        }
}
只有在每个语句后面加上break后,才能跳出去不执行符合要求的case后面的语句。如果不用case的话就相当于执行如下语句  i+=1; i=10; i=0;所以最后就是输出i=0.喜欢对你有帮助
作者: 孟祥钰    时间: 2014-5-29 20:53
你这个是switch语句中 没有加break出现的问题。
你的i初始被赋值为1,进入switch语句后满足case 1 这个条件,执行i+=1; 因为这条语句后没有加break;语句,所以会继续向下依次运行i=10;和i=0; 由于最后一条语句将 i的值赋值为0后结束了switch语句,所以最后输出打印的i的值是0。

作者: 北极£莜蓝    时间: 2014-5-29 21:21
因为你的switch语句中case下的break给省略了.switch语句一旦碰到第一次case匹配,就会开始顺序执行以后的代码,而不管以后的case的条件是否匹配,后面的case条件下的代码都会被执行,知道碰到了break语句为止.所以你上面的语句一直执行,执行到了default语句:i=0.
作者: heima_xyu    时间: 2014-5-29 21:31
switch停止,要满足break或者语句结尾
作者: LFW    时间: 2014-5-30 10:47
这哥们是专业做水贴的么。。。我是来学经验的{:2_37:}为毛老是见你问




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2