我正在编写一个程序来实现我在文献中找到的算法.
@H_502_2@在这个算法中,我需要一个while循环;
while(solution has changed){ updateSolution(); }
为了检查while条件是否满足,我创建了一个名为copy的Object(与解决方案类型相同).在更新解决方案之前,此副本是解决方案的副本.因此,如果解决方案发生了变化,则会满足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 }
解决方法
使用do {} while(condition);.