通过调用方法初始化数组

时间:2015-09-15 14:28:50

标签: java initialization

我用java编写了这个程序,但是我在运行时遇到了困难。

public static void main(String[] args) {
33. int[][] maze_matrix = input();
    int check = inputCheck(maze_matrix);
    if(check==1){
        startApplication(maze_matrix);
    }
    else{
        System.out.println("Source and destination entered is not valid.");
    }
}

input()方法如下:

 138.private static int[][] input() {


    System.out.println("Enter the size of the maze row_by_column");
    n = in.nextInt(); //Entering rows.
    m = in.nextInt(); //Entering columns.

    int ar_maze[][]= new int[n][m];
    //Initializing the array with given rows and columns.

    for (int i=0;i<n;i++) {
        for(int j=0;j<m;j++) {
152.    ar_maze[i][j] = rand.nextInt(2);
    }

     //Filling array randomly with 0's and 1's.
    return ar_maze;

161.    }

我得到了:

Exception in thread "main" java.lang.NullPointerException
at MazeApplication.input(MazeApplication.java:152)
at MazeApplication.main(MazeApplication.java:33)

不能以这种方式初始化数组吗?如果不是为什么?

3 个答案:

答案 0 :(得分:3)

at MazeApplication.input(MazeApplication.java:152) 此时唯一可能的空指针是rand

您应该在Random rand = new Random();开头input()初始化您的兰特{/ 1}};

答案 1 :(得分:2)

您没有提供整个代码示例,但看起来rand可能为空。

你可以这样做:

Random rand = new Random();

或者,在输入函数的顶部:

private static int[][] input() {
    if(rand == null) // initialize Random for the first time
        rand = new Random();

    ...
}

答案 2 :(得分:2)

数组似乎没有问题,你在哪里初始化rand? 你应该做点什么:

Random rand = new Random(); 
在for循环之前