我的所有对象都在我的arraylist中改变了

时间:2014-11-04 15:32:32

标签: java arraylist

我正在向ArrayList添加一个新对象(类),但是当我尝试从ArrayList中的对象中获取变量时,我所有类中的变量都是相同的。我添加了一个新对象,所以我希望它添加一个新对象,对吧?

这是我的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;
    }
}

3 个答案:

答案 0 :(得分:3)

你必须在类中声明变量的问题&amp;这段代码很有用。

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 :(得分:1)

你的TreeDot getter / setter搞砸了。在xLoc()中,您传递_x_loc,使其等于x_loc并将其返回。 yLoc()

也是如此

答案 2 :(得分:1)

类变量应该在类中声明。 你正在做的是每次添加一个新的TreeDot时都设置相同的(全局)变量。

P.S。你的吸气剂不是问题,因为有些答案正在提及。