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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 落星追恒 中级黑马   /  2016-3-14 11:22  /  610 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 落星追恒 于 2016-3-17 21:45 编辑

i的值是2
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;
    }

我感觉是4 为啥是10啊?

7 个回复

正序浏览
原来是break穿透的问题 谢谢大家
回复 使用道具 举报
哈哈 来签到!
回复 使用道具 举报
因为没有break,函数会依次执行,直到结束。
回复 使用道具 举报

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;
    }
请问你i接受的值是多少?
回复 使用道具 举报
变量i的值是多少?每个case的语句体下面都没有写break,不写的话会造成case穿透
回复 使用道具 举报
首先要调用这个方法,传入参数,还有每个case后面都要加break;
回复 使用道具 举报
首先你传入的变量i是多少。
然后case后面没有跟break,所以会穿透下去。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马