How to fix the following error java.lang.ArrayIndexOutOfBoundsException

481 Views Asked by At

I wanted to ask a question of code that has grated ja, I have the following code, I am going through a 10x5 array to fill it with number 1, to 49 for a primitive and the function that is responsible for making ticket gives me very rare errors. Index On Bound in theory the function would not have to go out of the way but I do not know what to do if someone can hit me.

// It is this part that gives me an error, I have a fly
            int ,c=0;
            int m[][]= new int[10][5];
    
            for (int i=0;i<m.length;i++) {
                for (int x=0;x<m.length;x++,i++) {
                    m[x][i]=c;
                    
                }
                
            }
            
            
            
// This part of code I only have to check if the data output
    // does them correctly
            for(int i=0;i<m[0].length;i++) {
                for(int x=0;x<m.length;x++) {
                    System.out.print(" "+m[i][x]+" ");
                }
                System.out.println(" ");
            }
        }
    
    El error que me da es siguiente:
    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
        at provas/provas.main.main(main.java:11)
1

There are 1 best solutions below

0
On

Looks like you want to fill given array with numbers from 1 to 49. So you have to pay attention on:

  • int[][] arr = new int[10][5] creates an int array with 10 rows and 5 columns
  • arr.length gives you a total rows amount
  • arr[0].length given you a total columns amount at row 0 (each row could have different length).
public static int[][] fillArray(int[][] arr) {
    int i = 1;

    for (int row = 0; row < arr.length; row++)
        for (int col = 0; col < arr[row].length; col++)
            arr[row][col] = i++;

    return arr;
}

And finally to print an array:

public static void printArray(int[][] arr) {
    for (int row = 0; row < arr.length; row++) {
        for (int col = 0; col < arr[row].length; col++)
            System.out.format("%3d", arr[row][col]);

        System.out.println();
    }
}

You original method could be like this:

int[][] arr = fillArray(new int[10][5]);
printArray(arr);