我用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)
不能以这种方式初始化数组吗?如果不是为什么?
答案 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循环之前