我正在制作一个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
不应为静态变量,因为它将在所有实例之间共享。显然,这不是您的意图,因为宝藏是针对每个实例的。