我正在开发一个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);