我正在制作一个RPG风格的程序,但是我很难使我的一系列珍贵物品起作用。我想保存在阵列中找到的所有宝藏,以便以后打印。这是宝藏类的代码:

private static int x = 0;
Treasure treasureArray[] = new Treasure[20];

public void collectedTreasures(Treasure t){
treasureArray[x] = t;
x++;
}

并在主程序中:
GoldTreasure t = new Coin();
hero1.setPoints(t.getCoin());
t.collectedTreasures(t);

宝物的创建是在无限循环内的开关内进行的。
当我打印出数组时,用方法
public void printTreasures(){
        for (int y=0 ; y<x ; y++){
            System.out.print(treasureArray[y] + ", ");

我只会得到“null”,因为阵列中应该有尽可能多的宝物。如果我在t.collectedTreasures(t)之后打印出数组,我会看到只有最后一个宝藏,并且该对象之前的索引为null。我做错了什么?

是的,我是新手。对人好点。

最佳答案

这段代码非常可疑:

GoldTreasure t = new Coin();
hero1.setPoints(t.getCoin());
t.collectedTreasures(t);

这意味着您是:
  • 创建一个新的宝藏t;
  • 在该实例上调用collectedTreasures

  • 您应该将宝藏阵列分配给英雄,而不是宝藏本身。

    另请注意,x不应为静态变量,因为它将在所有实例之间共享。显然,这不是您的意图,因为宝藏是针对每个实例的。

    10-05 23:11