已有101人关注
《java从入门到精通》69页例4.9程序
发表在Java图书答疑 2016-08-05
是否精华
版块置顶:
我把源程序改了下,如下:
public class GetSwitch {
    public static void main(String[] args) {
    int week=1;
    switch(week){
    case 1:
    System.out.println("monday");
    case 2:
     System.out.println("tuesday");
    case 3:
     System.out.println("wensday");
    case 4:
     System.out.println("thursday");
    case 5:
     System.out.println("Friday");
    case 6:
     System.out.println("satday");
    case 7:
     System.out.println("sunday");
    default:
     System.out.println("星期几都不是");
    }
  }
}
程序运行结果:
monday
tuesday
wensday
thursday
Friday
satday
sunday
星期几都不是

我的疑问:67页最下面不是说  如果表达式的值和某个case后面的变量值相同,则执行case语句后的若干语句直到遇到break为止,此时如果case语句中没有break语句,则将继续执行case后面的若干语句直到遇到break为止。

我的理解是:week=1和case 1相等,输出monday,由于没有break,接着去判断case2,case3等等,1明显不等于2和3等等,为什么还输出了tuesday、wensday等等?这个是什么原因
分享到:
精彩评论 1
静心_mrkj
学分:0 LV1
2016-08-06
沙发
书中的描述是正确的:如果case语句中没有break语句,则将继续执行case后面的若干语句直到遇到break为止。由于在你的程序中没有break,且每个case后面的语句都是控制台输出语句,所以程序会一直执行,直到程序结束,控制台会输出所有的内容。读者可尝试在某个case后加上break,看看运行效果,然后理解起来就会事半功倍。当然,如果想得到“week=1和case 1相等,输出monday”这个结果,必须严格遵守switch语句的语法结构,即在每个case块后都跟上break。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照