当我使用arraylist.add时,它将所有数据替换为当前添加的数据,需要帮助

时间:2019-04-30 21:37:24

标签: java

我正在模仿吃豆人游戏,目前我正在尝试实现一种算法,以搜索达到特定目标的路径。该算法检查可用路径,并将每个步骤添加到包含名为stack的int []的ArrayList中。我的问题是,每次找到新的可用步骤并尝试使用.add方法将其添加到arraylist时,它都会用我要添加的内容替换所有当前数据。

我尝试了各种解决方案,但是它们都行不通(这也是为什么我的代码如此混乱的原因)

private Position tempPos;
private int distanceFromRoot = 0;
private int[] toStoreInStack = new int[3];
private int[] tempStore = new int[3];
private ArrayList<int[]> stack = new ArrayList<>();
if (findValidPosition(tempStore[0], tempStore[1]))
    {
        distanceFromRoot++;
        toStoreInStack[0] = tempPos.getX();
        toStoreInStack[1] = tempPos.getY();
        toStoreInStack[2] = distanceFromRoot;
        stack.add(toStoreInStack);
        System.out.println(Arrays.toString(stack.get(distanceFromRoot)));
        System.out.println(Arrays.toString(stack.get(0)));
    }

然后打印应该显示我刚刚输入的内容以及我最初输入的内容,沿着

[1, 2, 1]
[1, 2, 1]
[1, 3, 1]
[1, 2, 1]
[1, 4, 1]
[1, 2, 1]

但实际上它只是打印

[1, 2, 1]
[1, 2, 1]
[1, 3, 1]
[1, 3, 1]
[1, 4, 1]
[1, 4, 1]

我在arraylist中测试了几个不同的位置,似乎将所有其他数据替换为刚输入的数据。

0 个答案:

没有答案
相关问题