【发布时间】:2011-11-20 04:27:09
【问题描述】:
我正在编写一个程序来实现我在文献中找到的算法。 在这个算法中,我需要一个while循环;
while(solution has changed){
updateSolution();
}
为了检查 while 条件是否满足,我创建了一个名为 copy 的对象(与解决方案的类型相同)。此副本是解决方案更新前的解决方案副本。因此,如果解决方案发生变化,则满足 while 循环中的条件。
但是,在执行 while 循环时,我在为两个对象的条件找到最佳解决方案时遇到了一些问题,因为我从一个空解决方案(结果集)开始,并且当时副本也是空的(两者都用类的构造函数)。这意味着当执行 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
}
【问题讨论】:
标签: java while-loop iteration