2014-04-07 4 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

간단히 'i -;'를 실행하십시오. – 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

내가 원하는 내 특정 조건이 적용되는 경우 ++의 I하지에 루프.

이 그럼 당신은 아마 for 루프를 싶지 않아, 당신은 아마 단지 당신이에 for를하지 않은 상태의 반대에 증가 while를 원한다. 예를 들겠지만 내부 루프의 상태가 외부에 영향을 미치기를 원하는지 확실하지 않습니다. 이 형식의 일반적인 형태는 다음과 같습니다.

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

3 진수 연산자를 사용하여 for 루프에서 조건을 테스트하고 조건이 true 일 때만 카운터 변수를 변경할 수 있습니다. 즉, 루프 외부에서 조건 변수를 이동해야합니다. 하지만 이런 식으로 쓸 수 있습니다.

관련 문제