cairunbo
@TianCheng
采纳率92.9%
2016-03-14 09:10 阅读 2.3k
已采纳

关于Switch语句,求大神解答!感谢!

public class HelloWorld {
public static void main(String[] args) {
int num=1;
switch(num){
case 1:
System.out.println("1");
case 2:
System.out.println("2");
break;
case 3:
System.out.println("3");
break;
default:
System.out.println("4");

    }
}

小弟学习Java时遇到的问题,:关于上述代码,如果把case1后面的break去掉,我能理解case1的语句能执行,到case2后面的break终止,但是switch中num的值和case2后面的值不匹配,为什么会执行case2后面的语句呢?

十分感谢帮忙的大神!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

12条回答 默认 最新

  • 已采纳
    qq_32224861 June君 2016-03-14 09:32

    switch这个开关,他会去找是否有和num这个数值相等的case 值,有的话就会执行后面的输出语句,注意,一旦判断成功了,不管后面的case 值是多少,程序都会
    执行相应的输出语句,所以,通常情况下为了避免此错误,都会在每个case的逻辑语句后面加上一个 break,一旦执行成功,就会跳出switch。

    点赞 1 评论 复制链接分享
  • Joson_Wang Leo--Wang 2016-03-14 09:51

    swich case其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

    点赞 1 评论 复制链接分享
  • Joson_Wang Leo--Wang 2016-03-14 09:51

    swich case其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。

    点赞 1 评论 复制链接分享
  • wojiushiwo945you 毕小宝 2016-03-14 09:52

    这个问题是switch语句的语法决定的,如果某个分支进入后没有break语句,无论值是否满足下一个分支都会执行的,所以使用switch必须细心避免这个陷阱。

    点赞 1 评论 复制链接分享
  • sinat_28603977 hanqingkuo 2016-03-14 09:20

    你case1后面没加break呀

    点赞 评论 复制链接分享
  • qq_34287787 qq_34287787 2016-03-14 09:24

    当语句执行碰到break 才会终止

    点赞 评论 复制链接分享
  • qq_31201107 俳故 2016-03-14 09:25

    case 2后面不会执行了吧!

    点赞 评论 复制链接分享
  • lan410812571 西瓜007 2016-03-14 09:27

    你可以这样理解,第一次判断num=1就是相当于买了一张电影票进去放映厅了,只要不碰到清场(break),他看完1号厅的电影还可以接着去看2号厅的电影,
    直到碰到清场(break)才会从电影院赶出来。当然,现实中电影院没有清场这一说,一般也没有人看完一场留在里面看第二场。

    点赞 评论 复制链接分享
  • qq_33844778 qq_33844778 2016-03-14 09:28

    case1后面加break,跳出switch语句,不做后面的case

    点赞 评论 复制链接分享
  • zhonglong8 zhonglong8 2016-03-14 09:47

    你如果不再case后面加break的话他就会继续往下执行,执行到case2的时候的时候发现num的值不对了就会跳出循环。

    点赞 评论 复制链接分享
  • zhonglong8 zhonglong8 2016-03-14 09:47

    你如果不再case后面加break的话他就会继续往下执行,执行到case2的时候的时候发现num的值不对了就会跳出循环。

    点赞 评论 复制链接分享
  • u012235986 机器人大师_钱鹏在行动 2016-03-14 10:11

    运行直到break跳出子函数

    点赞 评论 复制链接分享

相关推荐