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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘永贵 中级黑马   /  2014-3-17 12:06  /  1195 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class aa {
        public static void main(String[] args) {
               
                int num = 4;
                int y = 0;
                switch(num) {
                        case 1:
                                y++;
                        case 2:
                                y+=2;       
                        case 3:
                                y+=3;
                        case 4:
                                y+=4;
                        case 5:
                                y+=5;
                }
                System.out.println(y);
        }
}
运行结果是什么  为什么

7 个回复

倒序浏览
  1. public class Test05 {
  2.     public static void main(String[] args) {
  3.             
  4.             int num = 4;
  5.             int y = 0;
  6.             switch(num) {
  7.                     case 1:
  8.                             y++;break;
  9.                     case 2:
  10.                             y+=2;break;      
  11.                     case 3:
  12.                             y+=3;break;
  13.                     case 4:
  14.                             y+=4;break;
  15.                     case 5:
  16.                             y+=5;break;
  17.             }
  18.             System.out.println(y);
  19.     }
  20. }
复制代码


你的代码中少了break语句,当num=4时,执行的语句是
y+=4;
y+=5;
所以y=9。

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
case语句后面没break,程序会一直执行到swich最后

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
如果匹配的case或者default没有对应的break, 那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。你的代码中没有break,会一直执行到switch的大括号结束。所以结果是9

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
switch语句是选择语句,只能接受int. byte. short. char 数据类型;break关键字的作用是,结束语句,返回当前值,你应该养成case 和break配套使用的习惯,如果不用break,程序会继续向下执行,y = 4, y+=5,结果就是9了;如果加上break,程序就不会再往下走,返回所匹配的值。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
介个很好解释的,首先num=4, switch语句跳到case4 (介个不需要解释吧,switch语句),y+=4;      
回复 使用道具 举报
然后,y=0 ,即 0+=4,   y= 4 接着往下执行,跳到case5    y+=5;即y =  (4+ =5)

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
王竞 中级黑马 2014-3-17 13:57:35
8#
你的case语句后面并没有写上break,所以导致在执行的时候,会依顺序往下执行,直到结束,或者在下面遇到beak;并没有在执行完成一个case条件以后就退出,这种写法也有一定的用途,比如
public class Test{
        public static void main(String[] args) {
               
                int num = 1;
                switch(num) {
                        case 1:
                              
                        case 2:
                              
                        case 3:
                               System.out.println("A");//当num 等一 1 或 2 或 3 时,都是打印出A
                               beak;
                        case 4:
                               System.out.println("B");
                              beak;
                        case 5:
                               System.out.println("C");
                              beak;
                      default:
                              System.out.println("D");
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马