有没有办法忽略for循环中的计数器?

时间:2014-04-07 19:59:29

标签: java for-loop

如果某个条件适用,我希望我的for循环不执行i ++。

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
                    }
            }
        }

4 个答案:

答案 0 :(得分:7)

  

如果某个条件适用,我希望我的for循环不执行i ++。

然后你可能不想要一个for循环,你可能想要while仅在你不想要{{1}的条件的相反方向增量}} 至。我做了一个例子,但不清楚你希望内环的条件如何影响外部。一般形式是:

for

小心条件,确保你不会无休止地循环。

或者有时向后循环是一个更好的选择,但我不认为这适用于这种情况。

答案 1 :(得分: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 :(得分:0)

您可以使用三元运算符测试for循环中的条件,并仅在条件为真时更改计数器变量。这意味着您需要在循环外部移动条件变量。但你可以写这样的东西

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

答案 3 :(得分:-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;
                }
    }
}