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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© aiq黑马程序员 中级黑马   /  2014-8-5 12:28  /  2972 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

[code]

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

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


y为什么会输出的6?

评分

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

查看全部评分

23 个回复

倒序浏览
执行了default
回复 使用道具 举报
因为每一个case语句后面没有跟break跳出,首先判断x=2,会执行default的y++,由于没有break,会一直往下执行y++,然后再y++,执行完后跳出,打印,所以结果是6
回复 使用道具 举报 1 0
将x传入然后判断,不是3不是4,就从default开始执行,因为没有break所以一直向下执行。执行了三次y++故结果为6。另外字后一句System打错了。
回复 使用道具 举报
没有break
回复 使用道具 举报
es2379649 发表于 2014-8-5 12:38
将x传入然后判断,不是3不是4,就从default开始执行,因为没有break所以一直向下执行。执行了三次y++故结果 ...

就是说跟default在语句中的顺序没有关系是吧?
回复 使用道具 举报
aiq黑马程序员 发表于 2014-8-5 13:08
就是说跟default在语句中的顺序没有关系是吧?

是的,找不到对应值就执行default。
回复 使用道具 举报
es2379649 发表于 2014-8-5 12:38
将x传入然后判断,不是3不是4,就从default开始执行,因为没有break所以一直向下执行。执行了三次y++故结果 ...

y++执行了3次,y岂不是成了9?
回复 使用道具 举报
桂何钢 发表于 2014-8-5 14:05
y++执行了3次,y岂不是成了9?

y开始的时候是3,执行三次每次加一,不是六吗?
回复 使用道具 举报
switch语句中,没有break的情况下,程序会一直向下运行,y++三次即是6.
回复 使用道具 举报
X没有对应的值,所以执行default,但执行规则是遇到break或到语句结尾,才会结束
回复 使用道具 举报
第一 没有break
回复 使用道具 举报
default的缘故。
回复 使用道具 举报
你没有跳转语句,程序循规蹈矩的执行完了整个流程。
回复 使用道具 举报
switch语句中,没有break,所以程序会一直向下运行,y++总共执行3次
回复 使用道具 举报
执行了default又没有遇到break,就会一直执行到代码结束,y++了三次,就是6
回复 使用道具 举报
switch语句只会在遇到break或者{ }的时候才会结束    就这么简单  找不到case的话  就会从default语句开始执行
所以y=3,然后执行了三次y++,就变成6咯= =
回复 使用道具 举报
没有正确的值,会执行default
回复 使用道具 举报
zhxu188 发表于 2014-8-5 12:36
因为每一个case语句后面没有跟break跳出,首先判断x=2,会执行default的y++,由于没有break,会一直往下执 ...

同意              
回复 使用道具 举报
default开始执行 一级一级的往下走。。。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马