我正在模仿吃豆人游戏,目前我正在尝试实现一种算法,以搜索达到特定目标的路径。该算法检查可用路径,并将每个步骤添加到包含名为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中测试了几个不同的位置,似乎将所有其他数据替换为刚输入的数据。