Skip to content
Advertisement

Why can’t i generate this 10×10 2D array?

I am trying to generate this 2D Array maze 10 by 10 with numbers 0-9 in each row for 10 rows, but I keep getting array out of bounds exception. I double checked my indexes and the loop format and everything looks standard.

public class MazeDemo {

    public static void main(String[] args) {
        Maze maze = new Maze(10, 10);
        maze.generate();
    }
}

class Maze {
    int N, M;
    int[][] cell = new int[N][M];
    public Maze(int N, int M) {
        this.N = N;
        this.M = M;
    }

    public void generate() {
        for (int i = 0; i < N; i++) {
            int counter = 0;
            for (int j = 0; i < M; j++) {
                cell[i][j] = counter;
                counter++;
            }
        }
        display(cell, 10, 10);

    }

    public static void display(int a[][], int N, int M) {
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < M; j++) {
                System.out.print(a[i][j]);
            }
        }
    }
}

What is going on here? Why am I getting the out of bounds exception?

Advertisement

Answer

When you declare cell, N and M are 0. Change it to something like

int N, M;
int[][] cell;
public Maze(int N, int M) {
    this.N = N;
    this.M = M;
    this.cell = new int[N][M]; // <-- add this.
}

And in generate, this

for (int j = 0; i < M; j++) {

should be

for (int j = 0; j < M; j++) {
User contributions licensed under: CC BY-SA
3 People found this is helpful
Advertisement