我已经生成了以下代码,但是它的执行会产生空指针异常。出于这个原因,我正在寻求帮助。
我认为异常是由指针对象引起的,但我无法理解我做错了什么。这是我的代码:
import java.util.Random;
public class Maze {
int width;
int length;
char elements[][];
boolean visited[][] ;
public Maze(int width,int length) {
this.width=width;
this.length=length;
char elements[][] = new char[width][length];
boolean visited[][] = new boolean[width][length];
for(int i=1;i<length-1;i++){
for(int j=1;j<width-1;j++){
visited[i][j]=false;
}
}
for(int i=0;i<length;i++){
visited[0][i] = true;
visited[width-1][i]=true;
}
for(int i=0;i<width;i++){
visited[i][0]=true;
visited[i][length-1]=true;
}
for(int i=0;i<width;i++){
for(int j=0;j<length;j++){
elements[i][j]='X';
}
}
}
public void generate(){
Random rn = new Random();
int start = rn.nextInt(length);
int end = rn.nextInt(length);
elements[0][start]='s';
elements[width-1][end]='e';
visited[1][start+1]=true;
elements[1][start+1]=' ';
for(int i=0;i<width;i++){
for(int j=0;j<length;j++){
System.out.println(elements[i][j]);
}
}
}
}
public class MazeLauncher{
public static void main(String args[]){
Maze maze = new Maze(4,5);
maze.generate();
}
}
答案 0 :(得分:0)
删除构造函数中的声明。
public Maze(int width,int length) {
this.width=width;
this.length=length;
elements = new char[width][length];
visited = new boolean[width][length];
...
}
目前您正在创建新数组,而不是使用已经声明的数组。