黑马程序员技术交流社区

标题: 下面的方法,当输入为2的时候返回值是多少?() [打印本页]

作者: x379769646    时间: 2016-10-8 00:04
标题: 下面的方法,当输入为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;    }

作者: 煤男纸    时间: 2016-10-8 00:47
当输入2时,返回4

作者: pdog    时间: 2016-10-8 00:48
---------------------10
作者: 致和崇宁    时间: 2016-10-8 01:22
这么简单是4吗收到回复呕
作者: 致和崇宁    时间: 2016-10-8 01:24
case2 ;result= result+i*2result=4
作者: x379769646    时间: 2016-10-8 01:53
致和崇宁 发表于 2016-10-8 01:22
这么简单是4吗收到回复呕

怎么可能这么简单
作者: 蓝光四号    时间: 2016-10-8 07:48
                      4呀

作者: skyleon    时间: 2016-10-8 11:59
本帖最后由 skyleon 于 2016-10-9 09:15 编辑

结果是10,因为当i是2时,经过匹配开始执行case 2后的语句,此时result = 4,注意这里没有"break;"语句结束switch,继续执行后面的result = result + i * 2,结果为result =10,此时遇到“}”,结束switch语句,return返回result的值。这就是没有break;语句造成的case穿透.

作者: chensc    时间: 2016-10-9 06:40
学习学习!
作者: zhuangshuang123    时间: 2016-10-9 09:14
结果是10,没有break会穿透的

作者: Jarc    时间: 2016-10-9 20:27
没有break 肯定是会执行到底10
作者: 码上成功    时间: 2019-7-9 22:35
skyleon 发表于 2016-10-8 11:59
结果是10,因为当i是2时,经过匹配开始执行case 2后的语句,此时result = 4,注意这里没有"break;"语句结束 ...

终于看到一个对的了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2