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