2016-04-01 54 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)); 

}