-2

I am trying to iterate through for loop but when I try to get value from 2D array and add that value then for loop misbehave. Here is the code I am sharing...

 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)
    }
Nikhil Singh
  • 300
  • 2
  • 13

2 Answers2

0

I have used until inbulid method in kotlin provide that method used in for loop to iterate a array and getting total sum value.

 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)
    }
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]

    }

Index iterate up to high limit size - 1, index + 1 is beyond

user8320224
  • 198
  • 4