2016-04-01 60 views
0

我正在用java创建一个游戏。我正在使用一系列Armor's设备 问题是,无论何时我更改数组中的1个变量,其他对象也会受到影响。这看起来像是一个指针问题,但是,所有对象都被初始化为独立的并称为new。数组对象“复制”

private Armor[] equip = new Armor[3]; 
public Inventory() 
{ 
    for(int i = 0; i<3;i++) 
     equip[i] = new Armor(); 

    equip[0] = new Armor("head","You don't have head equipment","head",0,10,0,0); 
    equip[1] = new Armor("tunic","A simple farmers tunic","chest",0,10,0,0); 
    equip[2] = new Armor("baggy pants","Basic pants woven from rough cloth","legs",0,10,0,0); 


    System.out.println(armorDes(0)); 
    System.out.println(armorDes(1)); 
    System.out.println(armorDes(2)); 
} 

所有打印输出线

baggy pants 
0 armor 
10 evasion bonus 
Basic pants woven from rough cloth 

,而不是他们自己统计的。

这是使用调试器进行测试的,所有对象都声明在数据中的不同位置。这是一个Java问题,我只是愚蠢?

+0

听起来像是你可能宣布的''Armor'或static'所有东西的领域,但只有这个代码来看看,我们可以”不知道发生了什么事。 – user2357112

+0

Welp看起来像我很愚蠢然后:D错误解决 – xcannibalrabbit

回答

0

代码不清上面

private Armor[] equip = new Armor[3]; 
public Inventory() 
{ 
for(int i = 0; i<3;i++) 
    equip[i] = new Armor();// Why creating object using default constructor here? no use 

equip[0] = new Armor("head","You don't have head equipment","head",0,10,0,0); 
equip[1] = new Armor("tunic","A simple farmers tunic","chest",0,10,0,0); 
equip[2] = new Armor("baggy pants","Basic pants woven from rough cloth","legs",0,10,0,0); 

// Use toString() method in Armour class to see the values present in variables. 
//Also be sure all variables are instance variables 

System.out.println(equip[0]); 
System.out.println(equip[1]); 
System.out.println(equip[2]); 

//System.out.println(armorDes(0)); 
//System.out.println(armorDes(1)); 
//System.out.println(armorDes(2)); 

}