gpt4 book ai didi

java - 我使用了clone,但原来的数组仍然受到影响

转载 作者:行者123 更新时间:2023-12-03 06:54:18 25 4
gpt4 key购买 nike

我正在尝试用 Java 编写一个 3x3 平方移位谜题求解器。然而,我被困在我移动 block 的部分 - 我一直用我正在使用的算法得到一堆新的空白空间。经过一些测试后,我确定这是因为,尽管我使用了clone()命令,但当我更改“current”时,v的数组仍然受到影响。有谁知道这是为什么以及我该如何解决它?我以为使用clone后,我可以改变新数组而不影响旧数组。

    if (!rightwall)
{
int[][] current = v.state.clone();
current[x][y] = current[x][y + 1];
current[x][y + 1] = 0;
State w = new State(current);
w.distance = v.distance + 1;
w.path = v;
System.out.println("Right Shift:");
w.print();
q.insert(w);
}

State 是一个表示二维数组和一些属性的类 - State 代码的第一部分是

public class State {
int[][] state = new int[3][3];
int distance = 0;
boolean known = false;
State path = null;
State(int[][] newstate){
state = newstate.clone();
}

v 是表示当前位置的状态。 w 将是在将空白空间与其旁边的空间交换后创建的“相邻”位置。

q 是一个队列。

最佳答案

在您的 State 类中,您需要确保所有属性都被深度复制。

关于java - 我使用了clone,但原来的数组仍然受到影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8287629/

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