关于switch分支判断问题

关于switch分支判断问题我理解不清:

var fruits:Array=["苹果","香蕉","葡萄","金桔","小番茄"];
                        var currentFruit:String=fruits[Math.floor(Math.random()*fruits.length)];
                        trace("摸到的水果是:"+currentFruit);
                        switch(currentFruit){
                                case "葡萄":
                                     trace("哎,葡,葡萄!");
                                case "小番茄":
                                     trace("免费品尝!");
                                     break;
                                case "苹果":
                                case "香蕉":
                                     trace("按价付钱");
                                     break;
                                default:
                                     trace("一定是金桔,不买。");

//为什么当选择水果是葡萄的时候也会出现“免费品尝”呢?“免费品尝”是写在小番茄里面的,为什么只要是抽到是葡萄后面的都会执行就不用比较是不是小番茄了?。。还有下面的苹果香蕉类似的情况,只要抽到苹果就不要比是否是香蕉了,也会显示“按价付钱”。。?


得解:

  1. switch(currentFruit){
  2.     case "葡萄":
  3.         trace("哎,葡,葡萄!");
  4.     case "小番茄":
  5.         trace("免费品尝!");
  6.         break;
  7. }
  8. // 相当于
  9. if(currentFruit=="葡萄" || currentFruit=="小番茄"){
  10.     if(currentFruit=="葡萄") {
  11.          trace("哎,葡,葡萄!");
  12.     }
  13.     trace("免费品尝!");
  14. }
复制代码

开始一个case后,如果该case符合条件,则会查找下个break,而该case与下个break之间的所有case都将与第一个case进行或运算(||),你可以看成被直接忽略了。
所以,如果选择的是葡萄,那么在case "葡萄"与下一个break之间的所有语句都将被执行。

转载于:https://www.cnblogs.com/mengyusha/archive/2011/07/20/2112075.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值