簡化,我基本上有一個if語句是這樣的:Java中,重複if語句,如果條件爲假
if(A[random]==1)
A[random]=0;
else
continue;
現在我知道了「繼續」是循環語句,這是行不通的,但我想要一些東西后,如果確實其他(基本條件是錯誤的)被激活它重複第一個if(A [random] == 1)語句。
簡化,我基本上有一個if語句是這樣的:Java中,重複if語句,如果條件爲假
if(A[random]==1)
A[random]=0;
else
continue;
現在我知道了「繼續」是循環語句,這是行不通的,但我想要一些東西后,如果確實其他(基本條件是錯誤的)被激活它重複第一個if(A [random] == 1)語句。
你可以試試下面的遞歸代碼,看看這個決心的查詢
public class Test {
public void continueIf(){
if(A[random]==1)
A[random]=0;
else {
continueIf();
}
}
public static void main(String[] args) {
new Test().continueIf();
}
}
請注意,如果,如果條件不那麼符合它會導致stackoverflowerror。這也取決於JVM內存的大小。請檢查此link以獲取有關stackoverflow錯誤的更多詳細信息。
如果我錯了,請糾正我,但是這種方法會導致'StackOverflowException' 。它需要一個'return;',即使如此,邏輯也是錯誤的。 –
我測試了它,它工作這是我想要的結果,感謝pise –
@MirandaCode由@drewkennedy說,如果你的條件不滿足,那麼它可能會導致'java.lang.StackoverflowError'。 – pise
if/Else語句本身無法在循環數組時使用。我建議將它固定在For循環或While循環中。循環將搜索數組,if/else語句將檢查提供的條件的索引。我也會擺脫其他。你真的不需要這個部分只是如果。
一種在最基本的例子循環將是這個樣子:
for(var i = 0; i < SIZE; i++)
{
if (A[i] == 1)
A[i] = 0;
}
大小將是你的數組的大小
我需要它從A數組中隨機選擇一個值....考慮到這一點,我不能在for循環中實現它,並有A [i],有點擊敗目標 –
random = ...; // get first random number
while (A[random] != 1) {
random = ...; // get new random number
}
A[random] = 0; // now is 1, switch it to 0
這應該work.The其他答案已經描述而和遞歸,所以我 也增加了一個do while循環。
do{
//generate the random number
}while(A[random]!=1)//The loop iterates till the condition A[random]!=1 is satisfied
A[random]==0;//changing the bit to 0
請注意,如果在數組中沒有bit =1
然後因爲你是隨機生成的索引該解決方案將失敗。 因此,如果陣列沒有element =1
,那麼它會不斷檢查索引並生成infinite loop
。
希望它help.happy編碼!
你也許正在尋找'while(!condition)'? – Wormbo
這將終止條件是什麼?它應該在'A [random] == 1'之後終止嗎? – JPeroutek
是的,當它發現數組中的位爲1時結束,並且在它改變爲0之後,if應該停止。 while語句,它會停止,如果它發現一位是0,不會改變任何東西 –