gpt4 book ai didi

java - 检查对象时的 NPE?

转载 作者:行者123 更新时间:2023-12-02 06:27:05 27 4
gpt4 key购买 nike

所以我觉得自己像个白痴,但我正在尝试实现碰撞检测,并且我需要检查玩家旁边是否有方 block 。当我去检查时,我首先会看看我要找的瓷砖是否真的在那里。如果是,我将继续选择该图 block 并从中创建一个新对象。如果不是,我就不会碰瓷砖。然而,当我试图检查图 block 时却得到了 NPE!这是检查代码(只是相关的一小部分):

if (world.tiles[(int) getX() / 32][(int) getY() / 32] != null) {
Tile t = world.tiles[(int) getX() / 32][(int) getY() / 32];

这是世界级的图 block 数组,我将其传递给玩家:

    public Tile[][] tiles;

以及我如何创建它们:

tiles = new Tile[mx][my];
for (int x = 0; x < mx; x++) {
for (int y = 0; y < my; y++) {
if (rand.nextInt(2) == 0) {
tiles[x][y] = new Tile(x * 32, y * 32, 32);
}else if(y == 0){
tiles[x][y] = new Tile(x * 32, y * 32, 32);
}
}
}

如您所见,我获取了玩家位置,然后除以图 block 大小 (32) 以获取图 block 坐标,然后检查图 block 是否为空。我知道我正在将世界传递给玩家,所以这不是问题。问题是,当我寻找图 block 时,它是空的!为什么?

最佳答案

请在下一篇文章中包含错误发生位置的确切错误消息,现在我可以假设两件事:

  • 您没有初始化世界
  • 您没有初始化rand

我强烈认为您忘记初始化rand,因为您似乎习惯于正确初始化数组。

关于java - 检查对象时的 NPE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422456/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com