Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java player.getX()返回null_Java_Variables_Methods_Null_Getter - Fatal编程技术网

Java player.getX()返回null

Java player.getX()返回null,java,variables,methods,null,getter,Java,Variables,Methods,Null,Getter,我有一个函数,它抓取玩家的X个单词,然后返回它们,但由于某种原因,它返回null,我不太明白。(因此我来到这里) 我得到的确切错误如下: java.lang.NullPointerException at dev.colors.level.Level.getXOffset(Level.java:78) 我所做的就是把这叫做第78行: if(player.getX() <= half_width){ 我们通过创建玩家对象来声明LevelObject: player = new Playe

我有一个函数,它抓取玩家的X个单词,然后返回它们,但由于某种原因,它返回null,我不太明白。(因此我来到这里)

我得到的确切错误如下:

java.lang.NullPointerException
at dev.colors.level.Level.getXOffset(Level.java:78)
我所做的就是把这叫做第78行:

if(player.getX() <= half_width){
我们通过创建玩家对象来声明LevelObject:

player = new Player(128, 64);
然后通过Player.java类和Character.java类将两个变量传递到那里:

public class Player extends Character {


public Player(float x, float y) throws SlickException {

    super(x, y);

}
Character.java:

public abstract class Character extends LevelObject {

public Character(float x, float y) throws SlickException {
    super(x, y);
}
}

在调用getX之前,一切都正常进行,直到调用getX为止(在LevelObject类中,即使我使用System.out从LevelObject打印“this.x”,在调用getX之前,它返回正确的变量,即Player对象声明的“128.0”)

更奇怪的是,如果我在getX方法中放入一些打印行,它们就不会出现在控制台中,就好像它甚至没有运行该方法一样


这对我来说没有任何意义,我非常迷茫。

显然,
player
变量为空。
getXOffset()
没有初始化
player
变量,所以我猜它一定是一个类字段或什么东西,必须用不同的方法初始化。 也许您需要将
this
关键字添加到播放器初始化代码中(使其看起来像
this.player=newplayer(128,64);


无论如何,您的
player
变量未正确初始化,这就是异常的原因。

请发布一个可复制的示例好吗?我非常怀疑这是真实示例的粘贴,因为它无法编译。我非常怀疑
getX()的返回值
null
,因为它返回一个基元,基元不能是
null
。请更具体一点。需要更多的上下文,对象是如何创建的等等。你说它是null。你的意思是你在播放器上得到一个null指针异常吗?X本身是一个基元类型,不能为null。完整的示例需要我的whole代码,这是一个很长的列表,所有这些都会导致它,它与创建播放器对象有关,然后将x设置为当前播放器的位置,我可以抛出我正在使用的repo。如果你想让我们帮助你,然后将其归结为问题发生的确切位置。不要向我们抛出不必要的源代码。再次看,你会发现在一半正确的情况下,您没有声明player变量是正确的,但这是因为我混淆了两件事:在声明player是什么之前,我用一个player渲染了地图!非常好,很高兴我能提供帮助!=)
public class Player extends Character {


public Player(float x, float y) throws SlickException {

    super(x, y);

}
public abstract class Character extends LevelObject {

public Character(float x, float y) throws SlickException {
    super(x, y);
}