Можно ли продолжить n раз в цикле Котлина?
пример:
for(i in 0..10){
if(condition){
//continue n times
}
}
Поскольку i
по какой-то причине является значением val, я не могу повторно инициализировать его в цикле.
Предложение из комментария квместо этого используйте цикл while, лучше ли будет использовать вместо него цикл while?
var i: Int = 0
while(i <= amountOfIterations){
//logic
if(condition){
i += amountOfContinues
}
i++
}
Мой краткий вопрос довольно запутанный.Я пытаюсь создать приложение для двоичного калькулятора Android в kotlin, цель состоит в том, чтобы изучить 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
}
Я беру две строки из текстовых представлений, представляющих двоичные значения.Я конвертирую их в IntArrays и стремлюсь создать сумму IntArray, которая будет суммой вычитания.Метод выполняет фактическое вычитание, когда вычитая двоичные файлы, вам иногда приходится заимствовать некоторые индексы в мини-конечную сумму, и в этом есть некоторая логика, требующая от меня сделать вложенный цикл, завершающий часть логики, парой итераций в основной цикл.
Мой вопрос сосредоточен вокруг логики основного цикла.Я был не уверен, можно ли было пропустить итерации, для которых вложенный цикл завершил логику.
Функция не завершена и была добавлена исключительно по запросу.Функция не является базовой линией вопроса.