gpt4 book ai didi

java - 不需要的对象覆盖

转载 作者:行者123 更新时间:2023-12-01 16:05:04 26 4
gpt4 key购买 nike

我正在尝试编写一个程序来解决逻辑轮难题。我构建了根节点,并尝试生成通过轮子的不同移动而生成的不同子节点。问题是,当我尝试生成子节点时,根节点被覆盖,一切都搞砸了,我真的不知道为什么。 在这里你可以找到拼图logic wheels.

我将轮子表示为 3x3 数组。下面是实现这些 Action 的代码:

public Node turn_right(Node aNode, int which_wheel)
{
Node newNode = new Node(aNode.getYellow_wheel(),aNode.getBlue_wheel(),aNode.getGreen_wheel());

int[][] yellow = new int[3][3];
int[][] blue = new int[3][3];
int[][] green = new int[3][3];

if(which_wheel==0) //turn yellow wheel of this node to right
{
yellow[1][0] = newNode.getYellow_wheel()[0][0];
yellow[2][0] = newNode.getYellow_wheel()[1][0];
yellow[2][1] = newNode.getYellow_wheel()[2][0];
yellow[2][2] = newNode.getYellow_wheel()[2][1];
yellow[1][2] = newNode.getYellow_wheel()[2][2];
yellow[0][2] = newNode.getYellow_wheel()[1][2];
yellow[0][1] = newNode.getYellow_wheel()[0][2];
yellow[0][0] = newNode.getYellow_wheel()[0][1];

blue = newNode.getBlue_wheel();
blue[1][0] = newNode.getYellow_wheel()[1][2];
blue[2][0] = newNode.getYellow_wheel()[2][2];

green = newNode.getGreen_wheel();

}
else if(which_wheel == 1)// turn blue wheel of this node to right
{

blue[1][0] = newNode.getBlue_wheel()[0][0];
blue[2][0] = newNode.getBlue_wheel()[1][0];
blue[2][1] = newNode.getBlue_wheel()[2][0];
blue[2][2] = newNode.getBlue_wheel()[2][1];
blue[1][2] = newNode.getBlue_wheel()[2][2];
blue[0][2] = newNode.getBlue_wheel()[1][2];
blue[0][1] = newNode.getBlue_wheel()[0][2];
blue[0][0] = newNode.getBlue_wheel()[0][1];


yellow = newNode.getYellow_wheel();
yellow[0][2] = newNode.getBlue_wheel()[0][0];
yellow[1][2] = newNode.getBlue_wheel()[1][0];

green = newNode.getGreen_wheel();
green[1][0] = newNode.getBlue_wheel()[1][2];
green[2][0] = newNode.getBlue_wheel()[2][2];
}
else if (which_wheel == 2)//turn green wheel of this node to right
{
green[0][0] = newNode.getGreen_wheel()[0][1];
green[0][1] = newNode.getGreen_wheel()[0][2];
green[0][2] = newNode.getGreen_wheel()[1][2];
green[1][2] = newNode.getGreen_wheel()[2][2];
green[2][2] = newNode.getGreen_wheel()[2][1];
green[2][1] = newNode.getGreen_wheel()[2][0];
green[2][0] = newNode.getGreen_wheel()[1][0];
green[1][0] = newNode.getGreen_wheel()[0][0];

yellow = newNode.getYellow_wheel();

blue = newNode.getBlue_wheel();
blue[0][2] = newNode.getGreen_wheel()[0][0];
blue[1][2] = newNode.getGreen_wheel()[1][0];
}
newNode= new Node(yellow,blue,green);
return newNode;
}

还有另一个函数,就像这个函数,它的作用相反:它将轮子向左转动。我的问题是我不希望对象的 aNode 表被覆盖。

非常感谢。

最佳答案

.clone() 复制您不想覆盖的对象。

附:据我了解您的问题,对 blue = newNode.getBlue_wheel(); 的修改也会对 newNode 的蓝色轮子进行更改,是吗?

关于java - 不需要的对象覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2783567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com