2014-04-07 70 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) 
{ 
    .... 
} 
相关问题