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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李红志 中级黑马   /  2013-3-5 13:56  /  1658 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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,可是答案不是,怎么回事啊

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1 新人鼓励一下

查看全部评分

6 个回复

倒序浏览
本帖最后由 说好了丶然后呢 于 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);
     }
}

评分

参与人数 1黑马币 +6 收起 理由
陈丽莉 + 6 很给力! 请改名字~

查看全部评分

回复 使用道具 举报
你如果不写break;跳出循环的话,那3个赋值运算会一直运行下去的最后结果就是 x+2+3+1等于15.
如果写了break;跳出的话,值就等于11
回复 使用道具 举报
结束switch语句的两种情况:遇到break,执行到switch语句结束
如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束.
case之间与default没有顺序,先执行第一个case,没有匹配的case执行default
由于没有break且case =1( z=1)所以从switch语句由上向下执行,由于找到了case所以不执行default
所以最后打印结果为15.0

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

回复 使用道具 举报
明白了谢谢上面几个同学
回复 使用道具 举报
李红志 发表于 2013-3-5 14:44
明白了谢谢上面几个同学

下回记得自己改成【已解决】哦~
回复 使用道具 举报
给点技术分把!我在参加考试呢!谢谢咯!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马