Я пишу программу для реализации алгоритма, который я нашел в литературе. В этом алгоритме мне нужен цикл While While;
while(solution has changed){
updateSolution();
}
, чтобы проверить, выполняется ли выполнение условия времени, я создал объект (одного типа, что и решение), называемого копией. Эта копия представляет собой копию решения до обновления решения. Поэтому, если в растворе было изменение, состояние в цикле пока выполняется.
Тем не менее, у меня возникли проблемы с нахождением лучшего решения для условий обоих объектов, так как цикл Whicow выполняется, поскольку я начинаю с пустого решения (результатов), а копия также пуста в том времени (оба называются конструктор класса). Это означает, что когда цикл Whicle выполняется, оба объекта равны и, таким образом, все утверждения в цикле пока не выполняются.
Мое решение на данный момент состоит в том, чтобы создать фиктивную переменную, которая устанавливается на TRAGE перед циклом While, и устанавливается на ложь в нем. Я сомневаюсь, что это лучшее решение, поэтому мне интересно, если есть стандартное решение этой проблемы (какой-то способ заставить программу всегда запускать первую итерацию цикла 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
}