За петлю плохо себя вести в Котлине
Я пытаюсь перебрать цикл for, но когда я пытаюсь получить значение из двухмерного массива и добавить это значение, то цикл ведет себя неправильно. Вот код, которым я делюсь...
var max_sum = 0
var total : Int = 0
val arr = Array(6) { IntArray(6) }
for (arr_i in 0..5) {
for (arr_j in 0..5) {
arr[arr_i][arr_j] = arr_i*arr_j
}
}
if (arr.size <= 3 || arr[0].size <= 3) {
print("not valid array")
Log.e("total sum","not valid array")
} else {
for (row in 1..arr.size - 1) {
for (col in 1..arr[0].size - 1) {
total = arr[row][col] +
arr[row - 1][col] +
arr[row - 1][col - 1] +
arr[row + 1][col + 1] +
arr[row + 1][col] +
arr[row + 1][col - 1] +
arr[row + 1][col + 1]
}
max_sum = Math.max(max_sum, total)
}
print(max_sum)
Log.e("total sum",""+max_sum)
}
2 ответа
for (row in 1..arr.size - 1) {
for (col in 1..arr[0].size - 1) {
total = arr[row][col] +
arr[row - 1][col] +
arr[row - 1][col - 1] +
arr[row + 1][col + 1] +
arr[row + 1][col] +
arr[row + 1][col - 1] +
arr[row + 1][col + 1]
}
Индекс повторяется до верхнего предельного размера - 1, индекс + 1 за пределами
Я использовал до тех пор, пока метод inbulid в kotlin не предоставил этот метод, используемый в цикле for для итерации массива и получения значения полной суммы.
var max_sum = 0
var total : Int = 0
val arr = Array(6) { IntArray(6) }
for (arr_i in 0..5) {
for (arr_j in 0..5) {
arr[arr_i][arr_j] = arr_i*arr_j
}
}
if (arr.size <= 3 || arr[0].size <= 3) {
print("not valid array")
Log.e("total sum","not valid array")
} else {
for (row in 1 until arr.size -1 ) {
for (col in 1 until arr[0].size-1) {
total = arr[row][col] +
arr[row - 1][col] +
arr[row - 1][col - 1] +
arr[row + 1][col + 1] +
arr[row + 1][col] +
arr[row + 1][col - 1] +
arr[row + 1][col + 1]
}
max_sum = Math.max(max_sum, total)
}
print(max_sum)
Log.e("total sum",""+max_sum)
}