我正在另一台计算机上工作,并将我的代码导出为存档文件,在家中将其下载,解压缩并导入。一切似乎都很好,直到我发现我得到一个空指针异常,指向我在这里使用随机:
private final Random random = new Random();
protected void generateLevel() {
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
tiles[x + y * width] = random.nextInt(4);
}
}
}
它告诉我变量random返回null,当我控制+单击Random()时,它给我一个未找到类文件编辑器源的屏幕,here是截图。我似乎无法理解这个问题。为什么它无法从默认的Java库中找到文件的来源?有没有办法解决这个问题而不重写我的程序?
更新: 所以我被要求提供完整的堆栈跟踪,所以这里是:
Exception in thread "main" java.lang.NullPointerException
at com.josh.game.level.RandomLevel.generateLevel(RandomLevel.java:16)
at com.josh.game.level.Level.<init>(Level.java:14)
at com.josh.game.level.RandomLevel.<init>(RandomLevel.java:10)
at com.josh.game.Game.<init>(Game.java:46)
at com.josh.game.Game.main(Game.java:136)
以下是此错误中显示的所有函数,但它们都不应该返回null ...(我想这有点明显了)
RandomLevel函数(我决定抛弃整个事物)
public class RandomLevel extends Level {
private final Random random = new Random();
public RandomLevel(int width, int height) {
super(width, height);
}
protected void generateLevel() {
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
tiles[x + y * width] = random.nextInt(4);
}
}
}
关卡构造函数
public Level(int width, int height) {
this.width = width;
this.height = height;
tiles = new int[width * height];
generateLevel();
}
游戏构造函数
public Game() {
Dimension size = new Dimension(width * scale, height * scale);
setPreferredSize(size);
screen = new Screen(width, height);
frame = new JFrame();
key = new Keyboard();
level = new RandomLevel(64, 64);
player = new Player(key);
addKeyListener(key);
}
主要功能 public static void main(String [] args){ 游戏=新游戏(); game.frame.setResizable(假); game.frame.setTitle(Game.title); game.frame.add(游戏); game.frame.pack(); game.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); game.frame.setLocationRelativeTo(NULL); game.frame.setVisible(真);
game.start();
}
我需要提供任何其他代码。我已经完成并确保,据我所知,所有变量都在调用之前被实例化,所以我不能说。我可能错误地认为问题与我无法找到Random类的源代码有关,但我想不是吗?