-2

我正在尝试遍历 for 循环,但是当我尝试从 2D 数组中获取值并添加该值时,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)
    }
4

2 回答 2

0
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 超出

于 2018-02-20T06:40:43.807 回答
0

我一直使用直到 kotlin 中的 inbulid 方法提供用于 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)
    }
于 2018-02-20T05:54:23.070 回答