2010-05-15 80 views

回答

5

把你想要執行的語句只做一次就是這樣做的一種方式,但是,當然,假設語句出現在循環的結尾或開始,並且不取決於什麼條件在循環中(在之前或之後)繼續。如果你有這樣的事情:

do { 
    // do some stuff 
    // one time condition 
    // do some more stuff 
} while(condition); 

你不會輕易地將該信息拉出循環。如果這是你的問題,我的建議是在一次性聲明的周圍放置某種條件,並在語句運行時更新條件。事情是這樣的:

boolean hasRun = false; 
do { 
    // do some stuff 
    if(!hasRun) { 
    // one time condition 
    hasRun = true; 
    } 
    // do some more stuff 
} while(condition); 
+0

我想到這個,但我想知道它是否存在另一種方式來做到這一點 – Eddinho 2010-05-15 15:57:57

2

如何:

// one-time-code here 

do 
{ 
} 
while (condition); 
+0

不,我可以,因爲我有一個for循環之前的while循環所以相同的問題在for循環和指令取決於參數存在while循環 – Eddinho 2010-05-15 15:47:22

+0

請顯示您的代碼的更大的示例,其中包括所述for循環。這將使我們能夠提供更具體的答案。 :) – 2010-05-15 15:48:53

+0

不幸的是,我認爲這太簡單瞭解決方案(儘管他的問題沒有說清楚)。看到我的答案。 – JasCav 2010-05-15 15:50:10

1

將語句放在任何循環外面會導致每次調用該方法時只執行一次。

0

將您想要執行的語句只在while循環外移動一次。

0

假設你想保持循環內的代碼(!其他海報建議外移動代碼的明顯的解決方案),你可以考慮使用一個標誌,只有一次執行它:

boolean doneOnce=false; 

do{ 

    if (!doneOnce) { 

    \\execute this only one time 

    doneOnce=true; 
    } 

    \\other instructions instructions 

} while (condition) 

可能是一個有用的結構例如,如果你一度只有代碼之前曾在環其他指令。