2014-04-07 108 views
2

如果某個條件適用,我希望我的for循環不要執行i ++。有沒有辦法忽略for循環中的計數器?

for (int i = 0; i < r; i++) { 
      for (int j = 0; j < c; j = j+2) { 
       int n = (int)(Math.random()*(474))+1; 
        if(!myList.contains(n)) { 
         myList.add(n); 
         myList.add(n); 
        } 
        else { 
         //Do not do i++ and j = j+2 
        } 
      } 
     } 
+3

你可以只使用一個while循環,然後只增加計數器,當你想。 – forgivenson

+0

乾脆'' - ;' – alex

回答

5

您需要將i ++從迭代器插槽中移出。您不需要完全限定for()語句。 I.E. for(;;)在java中是合法的。

for (int i = 0; i < r;) { 
    for (int j = 0; j < c; j = j+2) { 
      int n = (int)(Math.random()*(474))+1; 
       if(!myList.contains(n)) { 
        myList.add(n); 
        myList.add(n); 
        i++; 
       } 
       else { 
        //Do not do i++ and j = j+2 
       } 
     } 
    } 
+2

儘管完全有效,但這可能會讓讀者感到困惑。 –

7

我希望我的for循環到不行的我++如果某個條件適用。

,那麼你可能不想for循環,你可能要一個while只增加在你不想的for的情況相反。我會舉一個例子,但目前還不清楚你希望內部環路的狀況如何影響外部環境。這樣做的一般形式是:

int i = 0; 
while (i < limit) { 
    if (/* Condition where you should increment */) { 
     ++i; 
    } 
} 

小心的條件,以確保你最終不會無休止地循環。

或有時向後循環是一個更好的選擇,但我不認爲這適用於這種情況。

+0

我將如何爲兩個循環執行此操作? – user3472686

+0

@ user3472686:完全取決於你希望他們如何關聯,這就是爲什麼我不能用兩個循環做一個例子。你怎麼想內循環中的條件(對於每個外循環的迭代重複幾次)來決定外循環的計數器是否增加,這並不是很清楚。但從根本上來說,最重要的是:在適當時增加櫃檯數量。其餘的是問題特定的邏輯。 –

-1
for (int i = 0; i < r;) { 
    for (int j = 0; j < c;) { 
      int n = (int)(Math.random()*(474))+1; 
       if(!myList.contains(n)) { 
        myList.add(n); 
        myList.add(n); 
        i++; 
        j = j+2; 
       } 
    } 
} 
0

您可以使用三元運算符在for循環中測試條件,並且只有在條件爲真時才更改計數器變量。這意味着您需要將條件變量移到循環外部。但你可以寫這樣的東西

for(int i = 0; i < r; cond ? i++ : i) 
{ 
    .... 
} 
相關問題