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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

elessarcheung

中级黑马

  • 黑马币:20

  • 帖子:63

  • 精华:0

© elessarcheung 中级黑马   /  2016-3-13 18:37  /  1115 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static int getValue(int i) {
        int result = 0;
        switch (i) {
        case 1:
            result = result + i;
        case 2:
            result = result + i * 2;
        case 3:
            result = result + i * 3;
        }
        return result;
    }
当输入为2的时候返回值为什么是10

5 个回复

正序浏览
回复 使用道具 举报
回复 使用道具 举报
高手就是不同的
回复 使用道具 举报
本帖最后由 参禅悟道 于 2016-3-13 18:54 编辑

那是因为你没有在result = result + i * 2;这局代码下面写上break;其实在每个case里面的break的作用就是当该case为true,则跳出整个switch循环 ;
如果你不写break;它还会继续往下执行case 3:  result = result + i * 3;因为这个时候result已经等于4了,i=2;所以result=result+i*3;之后result就等于10了。
不知我这样说,你明白了吗;



QQ截图20160313185218.png (11.9 KB, 下载次数: 1)

QQ截图20160313185218.png

点评

懂了 谢谢这么仔细的回答  发表于 2016-3-14 19:22
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马