2014-11-04 35 views
0

我向ArrayList添加了一個新對象(類),但是當我嘗試從我的ArrayList中的對象中獲取變量時,所有類中的變量都是相同的。我添加了一個NEW對象,所以我期望它添加一個新對象,對吧?我所有的對象在我的數組列表中改變

這是我的for循環中的代碼。該印刷品表示對象[i]中的每個變量都具有相同的編號。

ArrayList treeDots; 
ArrayList branchList; 
boolean clicked; 

void setup() 
{ 
    size(1024, 768, P3D); 
    clicked = false; 
    treeDots = new ArrayList(); 
    branchList = new ArrayList(); 
    treeDots.add(new TreeDot(width/2, height/2)); 
} 

void draw() 
{ 
    if (clicked) 
     AddTreeDot(); 

    if (treeDots.size() > 1) 
    { 
     for (int i = 0; i < treeDots.size() -1 ; i++) 
     { 
      int temp_loc = 0; 
      TreeDot index1 = (TreeDot)treeDots.get(i); 
      TreeDot index2 = (TreeDot)treeDots.get(i + 1); 
      print(index1.xLoc(temp_loc) + " "); 
      print(i + " "); 
      print(index2.xLoc(temp_loc) + " "); 
      print(i + " "); 
      strokeWeight(2); 
      stroke(#09FF00); 
      line(index1.xLoc(temp_loc),index1.yLoc(temp_loc), index2.xLoc(temp_loc), index2.yLoc(temp_loc)); 
     } 
    } 
} 

void AddTreeDot() 
{ 
    int randomX = 0; 
    int randomY = 0; 
    treeDots.add(new TreeDot(randomDotX(randomX), randomDotY(randomY))); 
    clicked = false; 
} 

int randomDotX (int _randomX) 
{ 
    TreeDot temp = (TreeDot) treeDots.get(treeDots.size() -1); 
    int temp_x_loc = 0; 
    int lastDotX = temp.xLoc(temp_x_loc); 
    _randomX = lastDotX + int(random(-10, 10)); 
    return _randomX; 
} 

int randomDotY (int _randomY) 
{ 
    TreeDot temp = (TreeDot) treeDots.get(treeDots.size() -1); 
    int temp_y_loc = 0; 
    int lastDotY = temp.yLoc(temp_y_loc); 
    _randomY = lastDotY + int(random(0, 10)); 
    return _randomY; 
} 

void mouseClicked() 
{ 
    clicked = true; 
} 

,這裏是我的類代碼

int randomSpread; 
boolean canIGrow; 
boolean endDot; 
int x_loc; 
int y_loc; 
int lineThickness; 

class TreeDot 
{ 
    TreeDot (int x_loc_par, int y_loc_par) 
    { 
     x_loc = x_loc_par; 
     y_loc = y_loc_par; 
     //ellipse(x_loc_par, y_loc_par, 10, 10); 
     endDot = false; 
    } 

    int xLoc (int _x_loc) 
    { 
     _x_loc = x_loc; 
     return _x_loc; 
    } 

    int yLoc(int _y_loc) 
    { 
     _y_loc = y_loc; 
     return _y_loc; 
    } 
} 
+0

奇怪的是什麼?你在期待什麼? – Nabin 2014-11-04 15:34:47

+0

在我for循環中,我檢查數組中對象的變量,如果代碼正常工作,index1.xLoc(temp_loc)應該有一個不同的值,然後index2.xLoc(temp_loc) – 2014-11-04 15:37:23

+0

您的類代碼中的變量聲明應該是在你的類的TreeDot {.....}定義裏面。試一試。另外,for循環正在創建tempLoc = 0;每次迭代。你想要那個嗎? – ha9u63ar 2014-11-04 15:38:23

回答

3

,你必須聲明類&這個代碼將prblematic內部變量的問題。

int xLoc(int _x_loc) 
{ 
    _x_loc = x_loc; 
    return _x_loc; 
} 

int yLoc(int _y_loc) 
{ 
    _y_loc = y_loc; 
    return _y_loc; 
} 

然後呼叫它

int temp_loc = 0; 
TreeDot index1 = (TreeDot)treeDots.get(i); 
TreeDot index2 = (TreeDot)treeDots.get(i + 1); 
print(index1.xLoc(temp_loc) + " "); 
print(i + " "); 
print(index2.xLoc(temp_loc) + " "); 
print(i + " "); 

此行index1.xLoc(temp_loc)你值重置爲0。

1

你TreeDot getter/setter方法都搞砸了。在xLoc()中,您傳遞的是_x_loc,使其等於x_loc並將其返回。

1

類變量應該在類中聲明。 你在做什麼是你每次添加一個新的TreeDot時都設置相同的(全局)變量。

P.S.一些答案提到了你的獲得者並不是問題。

相關問題