这道java题把我弄疯了,求大神帮我分析,为什么答案是D???

publicclassTest{publicstaticvoidmain(String[]args){intx=6,y=10,k=5;switch((int)(x%y))... public class Test {
public static void main(String[] args) {
int x=6, y=10, k=5;
switch((int)( x % y) ) //(=6)  (long类型不行)
{
case 0: k=x*y;
case 6: k=x/y;
case 12: k=x-y;
default: k=x*y-x; // (default 位置可以改变)
}
System.out.println(k);
}
}
A:60
B:5
C:0
D:54
展开
 我来答
小海子abc
2013-07-02 · 超过21用户采纳过TA的回答
知道答主
回答量:80
采纳率:50%
帮助的人:36.9万
展开全部
D,
你判断到switch里面是6的话,然后他会先去执行case 6:k=x/y=0;因为没有break,他就不会跳出switch,所以继续运行到case 12:k=x-y=-4;同理,没有break;继续执行k=x*y-x=54
最后k=54,中间都被替代掉了,,
这种题,就是看好入口,然后看什么时候跳出switch,如果没有break类似功能的就往下执行,直到遇到break,
夜光下的冥想曲
2013-07-02 · 超过11用户采纳过TA的回答
知道答主
回答量:43
采纳率:100%
帮助的人:27.5万
展开全部
小哥,这个题有点小错误啊!首先 switch 转换语句中的 case 语句后面没有 break 跳转语句,这样当执行一个case情况后并没有停止,而是继续执行该case后面的case语句。
正确的语句是:case 0: k=x*y;
break;
这样就正确了!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zsx10110
2013-07-02 · TA获得超过8872个赞
知道大有可为答主
回答量:2369
采纳率:66%
帮助的人:3099万
展开全部
有个地方你没有注意 你要看case后面没有跟break,所以case 6以后的case 都要执行哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chuckcoin
2013-07-02
知道答主
回答量:14
采纳率:0%
帮助的人:7.3万
展开全部
没有break,最终执行default的 k=x*y-x 即 k = 6 * 10 - 6, 结果k = 54
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式