How to force a program to always run the first iteration of a while loop?
I am writing a program to implement the algorithm I found in the literature
while(solution has changed){ updateSolution(); }
To check whether the while condition is met, I created an object named copy (the same as the solution type) This copy is a copy of the solution until the solution is updated Therefore, if the solution changes, the conditions in the while loop will be met
However, I encountered some problems when I found the best solution to the two object conditions when executing the while loop, because I started with an empty solution (result set) and the copy was also empty at that time (both using constructor calls) This means that when a while loop is executed, both objects are equal, so all statements in the while loop will not be executed
My current solution is to create a virtual variable set to true before the while loop and set it to false I doubt this is the best solution, so I wonder if there is a standard solution to this problem (somehow forcing the program to always run the first iteration of the while loop)?
The code is now:
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 }
Solution
Use do {} while (condition)