Kotlin跳过for循环中的下一个迭代

时间:2019-03-19 21:35:38

标签: kotlin

我需要估计循环内数据的某些部分,如果第一个不满足条件,则需要跳过下一部分:

val padding = 25
val threshold = 0.1
for (y in 0 until yArr.size) {
    for (x in 0 until xArr.size) {
        val xVal = xArr[x]
        val yVal = yArr[y]
        val subMat = getSubmatrix(yVal - padding, yVal + padding, 
                                  xVal - padding, xVal + padding)

        var out = processSubMatrix(subMat)

        if (x%2 == 1) {
        // do some stuff with array
        } else {
            if(out.max() < threshold) {
                x+=2 // cannot do that because x is immutable
                continue
             } else {
              // do some stuff with array
             }
        }
    }
}

在Java中,我可以通过简单的构造来做到这一点:

for(int x = 0; x < xArr.size; x++) {
    if(someRunTimeCondition) {
        x+=2;
        continue;
    } else { ... }
}

因此,我不能无视跳过Range初始化步骤中的某些迭代(在进入循环之前)。有人知道怎么做吗?

1 个答案:

答案 0 :(得分:1)

这可能是一个简单的解决方案,但是您可以始终使用while循环并自己进行递增。

var x = 0
while (x < xArr.size) {
    ...
    x++
}