Alex carrasco
Alex carrasco

Reputation: 11

How to fix the following error java.lang.ArrayIndexOutOfBoundsException

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)

Upvotes: -2

Views: 549

Answers (1)

Oleg Cherednik
Oleg Cherednik

Reputation: 18245

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);

Upvotes: 0

Related Questions