黑马程序员技术交流社区

标题: 怎么解释 [打印本页]

作者: aiq黑马程序员    时间: 2014-8-5 12:28
标题: 怎么解释
[code]

int x=2,y=3;
switch(x)
{
        default:
        y++;
        case 3:
        y++;
        case 4:
        y++;

}
Sysetem.out.println("y="+y);


y为什么会输出的6?
作者: 晓_猪    时间: 2014-8-5 12:35
执行了default
作者: zhxu188    时间: 2014-8-5 12:36
因为每一个case语句后面没有跟break跳出,首先判断x=2,会执行default的y++,由于没有break,会一直往下执行y++,然后再y++,执行完后跳出,打印,所以结果是6
作者: es2379649    时间: 2014-8-5 12:38
将x传入然后判断,不是3不是4,就从default开始执行,因为没有break所以一直向下执行。执行了三次y++故结果为6。另外字后一句System打错了。
作者: 王广丛    时间: 2014-8-5 12:40
没有break
作者: aiq黑马程序员    时间: 2014-8-5 13:08
es2379649 发表于 2014-8-5 12:38
将x传入然后判断,不是3不是4,就从default开始执行,因为没有break所以一直向下执行。执行了三次y++故结果 ...

就是说跟default在语句中的顺序没有关系是吧?
作者: es2379649    时间: 2014-8-5 13:17
aiq黑马程序员 发表于 2014-8-5 13:08
就是说跟default在语句中的顺序没有关系是吧?

是的,找不到对应值就执行default。
作者: 桂何钢    时间: 2014-8-5 14:05
es2379649 发表于 2014-8-5 12:38
将x传入然后判断,不是3不是4,就从default开始执行,因为没有break所以一直向下执行。执行了三次y++故结果 ...

y++执行了3次,y岂不是成了9?
作者: es2379649    时间: 2014-8-5 14:18
桂何钢 发表于 2014-8-5 14:05
y++执行了3次,y岂不是成了9?

y开始的时候是3,执行三次每次加一,不是六吗?
作者: guanxiangliang    时间: 2014-8-5 14:40
switch语句中,没有break的情况下,程序会一直向下运行,y++三次即是6.
作者: dingpanbo    时间: 2014-8-5 14:42
X没有对应的值,所以执行default,但执行规则是遇到break或到语句结尾,才会结束
作者: ┣┫流枫    时间: 2014-8-5 14:47
第一 没有break
作者: sydeay    时间: 2014-8-5 17:28
default的缘故。
作者: 怀念黑海岸    时间: 2014-8-5 20:16
你没有跳转语句,程序循规蹈矩的执行完了整个流程。
作者: 心之信子    时间: 2014-8-5 20:21
switch语句中,没有break,所以程序会一直向下运行,y++总共执行3次
作者: 姜佳文    时间: 2014-8-5 21:02
执行了default又没有遇到break,就会一直执行到代码结束,y++了三次,就是6
作者: Imp_x    时间: 2014-8-5 23:14
switch语句只会在遇到break或者{ }的时候才会结束    就这么简单  找不到case的话  就会从default语句开始执行
所以y=3,然后执行了三次y++,就变成6咯= =
作者: liujingnan    时间: 2014-8-5 23:20
没有正确的值,会执行default
作者: zxdanshui    时间: 2014-8-5 23:26
zhxu188 发表于 2014-8-5 12:36
因为每一个case语句后面没有跟break跳出,首先判断x=2,会执行default的y++,由于没有break,会一直往下执 ...

同意              
作者: conglin1991    时间: 2014-8-5 23:46
default开始执行 一级一级的往下走。。。
作者: 罗超8849    时间: 2014-8-5 23:48
2楼正解 。。。。。。。。。。
作者: 梧桐树下    时间: 2014-8-6 00:10
没有匹配的就读dafault,读完没有break就一直执行到了大括号
作者: alvinbx    时间: 2014-8-6 00:18
没加break,每一句都执行了,每次执自加1,就成了6呗。
作者: 桂何钢    时间: 2014-8-6 17:03
es2379649 发表于 2014-8-5 14:18
y开始的时候是3,执行三次每次加一,不是六吗?

哦,脑子一下没转过弯来,谢了!




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