Timo Koskinen
Timo Koskinen

Reputation: 19

Summing cells from table

I seem to not be able to solve this java.lang.ArrayIndexOutOfBoundsException: 5

I understand the error, but the table is 5x5 and I think I have everything right for printing it.

public static int tulosta_matriisi(int[][] matriisi) {
    int i=0, j=0;
    for(i = 0; i <= 4; i++) {
        for(j = 0; j <= 4; j++) {
            if(j == 4 && i <= 4)
                System.out.println(matriisi[i][j]);
            else if(i <= 4 && j <= 4)
                System.out.print(matriisi[i][j] +"\t");
        }
    }
    return matriisi[i][j];
}

Upvotes: 0

Views: 56

Answers (1)

Youcef LAIDANI
Youcef LAIDANI

Reputation: 59950

To avoid all this problem you have to use :

for(i = 0; i < matriisi.length; i++) {
   for(j = 0; j < matriisi[i].length; j++) {
...

When you get out your loop, the i and j will be incremented so you should not return matriisi[i][j] this make this error java.lang.ArrayIndexOutOfBoundsException: 5, so instead you should to return matriisi[i-1][j-1] so in the end your program should look like this :

public static int tulosta_matriisi(int[][] matriisi) {
    int i = 0, j = 0;
    for (i = 0; i < matriisi.length; i++) {
        for (j = 0; j < matriisi[i].length; j++) {
            if (j == matriisi[i].length - 1 && i <= matriisi.length) {
                System.out.println(matriisi[i][j]);
            } else if (i <= matriisi.length && j <= matriisi[i].length) {
                System.out.print(matriisi[i][j] + "\t");
            }
        }
    }
    return matriisi[i - 1][j - 1];
}

Good luck

Upvotes: 4

Related Questions