我正在编写一个程序来实现我在文献中发现的算法。在这个算法中,我需要一个while循环。
while(solution has changed){
updateSolution();
}
为了检查while条件是否满足,我创建了一个对象(与solution相同类型的对象)叫做copy。在更新solution之前,将其复制到copy中。因此,如果solution发生变化,则while循环中的条件得到满足。
然而,我在执行while循环时遇到了一些问题,因为我从一个空的解决方案(结果集)开始,并且在那时copy也是空的(两者都使用类的构造函数调用)。这意味着当执行while循环时,两个对象相等,因此while循环中的所有语句都不会被执行。
我的解决方法是在while循环之前创建一个虚拟变量,并将其设置为true,在其中将其设置为false。我怀疑这不是最好的解决方案,所以我想知道是否有标准解决方案来解决这个问题(强制程序始终运行while循环的第一次迭代的某种方法)?
现在的代码如下:
SolutionSet solution = new SolutionSet();
SolutionSet copy = new SolutionSet();
boolean dummy = true;
while((!solution.equals(copy)) || dummy){
dummy = false;
copy = solution.copy();
solution.update() // here some tests are done and one object may be added to solution
}