【问题标题】:IF-Statment inseide a double for loop?双 for 循环内的 IF 语句?
【发布时间】:2015-05-04 18:04:09
【问题描述】:

如何在双 for 循环中执行 IF 语句,检查数组中的对象是否等于 selectedItem.label?这是我的尝试! (没用)

function klikkA(evt:Event):void{
    for( var j:int = 0; j < 4; j++)
    {
        for (var k:int = 0; k < 8; k++)
        {
            if (listeA.selectedItem.label != myArray[j][k])
            {
                continue;
            }
            else if(listeA.selectedItem.label == myArray[j][k])
            {
                txtFlagg.text = myArray[j][k];
                break;
            }
        }  
    }
}

【问题讨论】:

  • 更多关于您的代码“不起作用”时发生的事情的详细信息可能会有所帮助。
  • 您实际上不需要 if 语句的上半部分和 continue 块。你有错误吗?你试过追查吗?

标签: arrays actionscript-3 if-statement for-loop


【解决方案1】:

break 语句单独只会中断内部循环。

As you can see in the documentation of break, you can specify a label

打破[标签]

它解释了:

在嵌套循环中,break 只会跳过直接循环的其余部分,并且不会跳出整个嵌套循环系列。要跳出整个系列的嵌套循环,请使用标签

There's additional documentation on the label keyword

它提供了一个可与您的示例相媲美的示例:

outerLoop: for (var i:int = 0; i < 10; i++) {
    for (var j:int = 0; j < 10; j++) {
        if ( (i == 8) && (j == 0)) {
            break outerLoop;
        }
        trace(10 * i + j);
    }
}
/*
1
2
...
79
*/

【讨论】:

    【解决方案2】:

    由于break 只能跳出单循环,您需要使用标志或转到。

    我会使用外部循环检查的标志,因为它通常更被接受:

    var found = false;
    
    for( var j:int = 0; !found && j < 4; j++)
    {
        for (var k:int = 0; k < 8; k++)
        {
           .... if(listeA.selectedItem.label == myArray[j][k])
           { ....
                found = true;
                break;
            }
        }  
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-02
      • 2019-05-04
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多