За петлю плохо себя вести в Котлине

Я пытаюсь перебрать цикл 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)
    }
Другие вопросы по тегам