gpt4 book ai didi

Java 引用问题

转载 作者:行者123 更新时间:2023-12-02 00:35:04 26 4
gpt4 key购买 nike

我对 Java 很陌生,所以如果这对你来说有点太愚蠢了,我很抱歉。因此,我有一个名为 Construct 的类,它有一个实例变量 previousState。我在该类中有一个 setter,其签名为 setPreviousState

然后,在另一个类中,我使用以下代码设置 Construct 对象的先前状态:

    ArrayList<Construct> sequence = new ArrayList<Construct>();
do {
Construct minimum = priorityQueue.delMin();
for (Construct neighbor : minimum.neighbors()) {
neighbor.setPreviousState(minimum);
priorityQueue.insert(neighbor);
}
System.out.println(minimum);
if (minimum.isGoalState()) {

// Construct sequence backwards and return it
sequence.add(minimum);
while(minimum.previousState() != null) {
sequence.add(0, minimum.previousState());
}
return sequence;
}
} while (true);

但是 while(minimum.previousState() != null) 是一个无限循环,因为 previousState() 始终引用同一个对象。为什么?

最佳答案

在此循环中,您永远不会更改 minimum 的值,而且 minimum.previousState() 的值对于每个对象来说也是恒定的[没有副作用到方法 previousState()],您可能需要将 minimum = minimum.previousState(); 添加到 while 循环中:

while(minimum.previousState() != null) {
sequence.add(0, minimum.previousState());
minimum = minimum.previousState();
}

关于Java 引用问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8026048/

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