[英]How to force the program to always run the first iteration of a while loop?
我正在編寫一個程序來實現我在文獻中找到的算法。 在這個算法中,我需要一個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);
。
您可以使用do-while
語句執行此操作:
SolutionSet solution = new SolutionSet();
SolutionSet copy = new SolutionSet();
do {
copy = solution.copy();
solution.update() // here some tests are done and one object may be added to solution
} while (!solution.equals(copy));
While
測試條件時,如果是,則運行指定的代碼。
有一種結構有點不同: Do... While
。 它執行一些代碼,並在塊結束時檢查是否滿足某些條件。 例如
do {
this;
that;
that another;
} while (this == true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.