黑马程序员技术交流社区
标题:
这个谁能给解释一下
[打印本页]
作者:
李红志
时间:
2013-3-5 13:56
标题:
这个谁能给解释一下
public class Cases{
public static void main(String[] arguments){
float x=9;
float y=5;
int z=(int)(x/y);
switch(z){
case 1:
x=x+2;
case 2:
x=x+3;
default:
x=x+1;
}
System.out.println("Value of X:"+x);
}
}
当X被显示时,其值是多少?
我认为应该是3或者7,可是答案不是,怎么回事啊
作者:
梁耀今
时间:
2013-3-5 14:09
本帖最后由 说好了丶然后呢 于 2013-3-5 14:12 编辑
因为你这里是没有退出,你没有添加break;int z =(int)(x/y);你这里Z是等于1,所以SWITCH语句是从头到尾执行过,所以答案是等于15;
正确写法:
public class Cases{
public static void main(String[] arguments){
float x=9;
float y=5;
int z=(int)(x/y);
switch(z){
case 1:
x=x+2;
break;
case 2:
x=x+3;
break;
default:
x=x+1;
break;
}
System.out.println("Value of X:"+x);
}
}
作者:
唐长智
时间:
2013-3-5 14:13
你如果不写break;跳出循环的话,那3个赋值运算会一直运行下去的最后结果就是 x+2+3+1等于15.
如果写了break;跳出的话,值就等于11
作者:
BitmapFactory
时间:
2013-3-5 14:15
结束switch语句的两种情况:遇到break,执行到switch语句结束
如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束.
case之间与default没有顺序,先执行第一个case,没有匹配的case执行default
由于没有break且case =1( z=1)所以从switch语句由上向下执行,由于找到了case所以不执行default
所以最后打印结果为15.0
作者:
李红志
时间:
2013-3-5 14:44
明白了谢谢上面几个同学
作者:
陈丽莉
时间:
2013-3-7 14:11
李红志 发表于 2013-3-5 14:44
明白了谢谢上面几个同学
下回记得自己改成【已解决】哦~
作者:
梁耀今
时间:
2013-3-8 00:44
给点技术分把!我在参加考试呢!谢谢咯!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2