我正在开发一个Java游戏,其中有一棵Tree持有一些有关游戏的不同数据。树的根音符具有一个“描述”游戏板的int数组。
现在,我想模拟该游戏可以从原始游戏板到X圈的可能步骤。
我是通过将游戏开发板传递给SimulateTurn函数来实现的。

public static AgentStructure SimulateTurn(int index, int[] gameTable)


然后我这样调用函数:

AgentStructure localStruct = new AgentStructure();
Tree node = new Tree("Child #"+(i-7), tree);
localStruct = SimulateTurn(i, tree.getAgentStructure().gameTable);
node.setAgentStructure(localStruct);
tree.AddChild(node);
System.out.print("Node created\n");


但这会更改原始游戏表中的数据

treee.getAgentStructure().gameTable


这是为什么?我感觉是因为传递的SimulateTurn函数正在更改gameTable而不是gameTable的副本?但是我该如何改变呢?
我确实不太喜欢Java,但是由于学校的作业,我不得不这样做。
有任何想法吗?
谢谢..

最佳答案

如果要复制数组,则必须手动复制-否则,将原始数组的地址传递给该方法,每次更改都会在原始数组中反映出来。

要复制数组,请咨询

Arrays.copyOf()


以各种形式。



final int[] gameTableCopy = Arrays.copyOf(gameTable, gameTable.length);

10-04 21:08