A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 无所谓啦 高级黑马   /  2014-5-29 11:07  /  1095 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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,为什么,详细分析过程!

11 个回复

倒序浏览
在switch语句中,只有遇到break或switch语句结束才会停。
虽然i=1符合case1,但是没有break,所以继续往下执行,直到遇到break或语句结束
回复 使用道具 举报 1 0
对的,需要使用break做控制的
回复 使用道具 举报
再每个case后加一个break
回复 使用道具 举报
在switch语句中,要是没有break,就会执行完当前的语句后,一直往下执行,知道break或者把下面所的能执行的语句执行完才能结束,你的这个代码中由于没有break所以一直往下执行,最后的一个能执行的语句是 i=0;所以最后结果就是i=0
回复 使用道具 举报
你安照这个代码去运行一下
回复 使用道具 举报
虽然有case==1,但你这里木有break跳出,会一直运行到最后defalt,最后i=0,输出就是i=0了
回复 使用道具 举报
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.喜欢对你有帮助
回复 使用道具 举报
你这个是switch语句中 没有加break出现的问题。
你的i初始被赋值为1,进入switch语句后满足case 1 这个条件,执行i+=1; 因为这条语句后没有加break;语句,所以会继续向下依次运行i=10;和i=0; 由于最后一条语句将 i的值赋值为0后结束了switch语句,所以最后输出打印的i的值是0。
回复 使用道具 举报
因为你的switch语句中case下的break给省略了.switch语句一旦碰到第一次case匹配,就会开始顺序执行以后的代码,而不管以后的case的条件是否匹配,后面的case条件下的代码都会被执行,知道碰到了break语句为止.所以你上面的语句一直执行,执行到了default语句:i=0.
回复 使用道具 举报
switch停止,要满足break或者语句结尾
回复 使用道具 举报
LFW 中级黑马 2014-5-30 10:47:32
12#
这哥们是专业做水贴的么。。。我是来学经验的{:2_37:}为毛老是见你问
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马