在Kotlin循环中继续n次

时间:2019-02-12 14:19:56

标签: loops kotlin continue

是否可以在kotlin循环中连续运行n次?

示例:

for(i in 0..10){
    if(condition){
        //continue n times
    }
}

由于i出于某种原因,我似乎无法在循环中重新初始化它。


从注释中建议改为使用while循环,那会更适合使用这样的while循环吗?

var i: Int = 0
while(i <= amountOfIterations){
    //logic
    if(condition){
        i += amountOfContinues
    }
    i++
}

我的问题简直是一团糟。我正在尝试在Kotlin中构建一个android二进制计算器应用程序,目标是学习kotlin和二进制计算。这是给我带来麻烦的功能

fun subtract(minuendString: String, subtrahendString: String): IntArray {

    var minuend = binaryStringToArray(minuendString)
    var subtrahend = binaryStringToArray(subtrahendString)

    if (subtrahend[subtrahend.size - 1] == 1 && minuend[minuend.size - 1] == 0 ||
        subtrahend.size > minuend.size
    ) {
        return IntArray(0)
    }

    var sum = IntArray(subtrahend.size)

    var beginSearchIndex: Int = 0
    var endSearchIndex: Int = 0
    var searchSpan: Int = 0

    for (i in 0..subtrahend.size - 1) {
        if (minuend[i] == subtrahend[i]) {
            sum[i] = 0
        } else if (subtrahend[i] == 0 && minuend[i] == 1) {
            sum[i] = 1
        } else {
            beginSearchIndex = i
            for (j in i..minuend.size - 1) {
                if (minuend[j] == 1) {
                    minuend[j] = 0
                    endSearchIndex = j - 1
                    searchSpan = endSearchIndex - beginSearchIndex + 1
                    break
                }
            }
            var tempSubtrahend = IntArray(searchSpan)
            var tempMinuend = IntArray(searchSpan)
            for (k in i..endSearchIndex) {
                tempMinuend[k] = minuend[k]
                if (subtrahend.getOrNull(k) == null ||
                    subtrahend.getOrNull(k) == 0
                ) {
                    tempSubtrahend[k] = 0
                } else {
                    tempSubtrahend[k] = 1
                }
            }
            sum[i] = 1
            for(v in 1..tempSubtrahend.size-1){
                if(tempSubtrahend[v] == 1){
                    sum[v] = 0
                } else {
                    sum[v] = 1
                }
            }
            //continue searchSpan - 1 amount of times
        }
    }
    for(i in subtrahend.size..minuend.size-1){
        sum[i] = minuend[i]
    }
    return sum
}

我要从textviews中获取两个字符串,它们代表二进制值。我将它们转换为IntArrays,我的目标是创建一个IntArray总和作为减法之和。 该方法正在执行实际的减法运算,当减去二进制数时,有时必须向减数中借入一些索引,并且这有一些逻辑,需要我做一个嵌套循环,以完成一些逻辑,并在主循环中进行一些迭代。

我的问题集中在主循环的逻辑上。我不确定是否可以跳过嵌套循环已完成逻辑的迭代。

该功能不完整,仅根据要求添加。该功能不是问题的基线。

1 个答案:

答案 0 :(得分:3)

repeat(n){
    blah()
}

将执行blah() n次。