2012-12-23 7 views
1

루프에 대해 어떻게 설명 할 수 있습니까?for this for 루프 구문

for (int i = 0, ii = deck.size(); i != ii;) { 

     int x = i % NUMBER_OF_CARDS; 
     int y = i/NUMBER_OF_CARDS; 

     Card d = deck.get(i++); 

     d.setFace(true);       // face up 
     d.displayCard(40 + x * 90, y * 140 + 10); // draw them 
     println(d.getRank());      // println 
     text("Value:" + d.getRank() + " of " + d.getSuit(), 40+x * 90, y * 140 + 120); 
    } 
+2

다운볼트 잘못되었습니다, IMO. 이해를 구하는 질문입니다. 구체적인 방법으로 묻습니다. – DWright

+1

나는 downvote하지 않았지만 여전히 좋은 질문은 아닙니다. * OP의 어떤 부분 *이 OP를 이해하지 못합니까? (나는 그것이 'i! = ii'라고 추측합니다.) 대답하기로 결정한 것은 관대하지만,이 양식의 질문 자체는 그렇게해서는 안됩니다. –

답변

10

for 루프에는 세 개의 섹션이 있습니다.

  1. 초기화;
  2. 종료 조건;
  3. 반복 (루프를 통해 모든 시간을 할 수있는 뭔가)

세 부분은 선택 사항입니다. 이 for(;;) {}과 같은 루프를 작성할 수 있으며 영원히 계속 될 것입니다. 또는 : for(;;) { break; }이며 즉시 종료됩니다. 또는이 같은 :

int i = 0; 
for(;;) { 
    if (++i>=4) { break; } 
} 

하고 break를 통해, 네 번 반복 한 후 종료됩니다.

질문의 루프에 반복 섹션이 없습니다. (하지만 루프 변수는 루프 본문 자체에서 업데이트됩니다 (예 : i++).

유일한 다른 특수 기능은 루프가 첫 번째 섹션의 두 변수, 즉 iii을 초기화한다는 것입니다. 이들은 쉼표로 구분 된 표현식을 순서대로 독립적으로 평가하게하는 쉼표 연산자로 구분됩니다.

5

루프,

for (int i = 0, ii = deck.size(); i != ii;) { 
    ... 
    Card d = deck.get(i++); 
    ... 
} 

갑판의 크기에 도달 할 때까지 루프
for (int i =0; i < deck.size(); i++) { 
    ... 
    Card d = deck.get(i); 
    ... 
} 
+0

감사합니다. 지금 받으십시오. – emre

1

거의 동일합니다. 루프 변수 i는 세 번째 라인에서 나중에 증가합니다. 그런 식으로 조금 이상합니다. 나쁜 가독성.

2
이 루프의

두 가지 주요 라인은 다음과 같습니다

for (int i = 0, ii = deck.size(); i != ii;) { 
     Card d = deck.get(i++); 
} 

동등한 :

for (int i = 0, ii = deck.size(); i != ii;) { 
     Card d = deck.get(i); 
     i++; // or i = i + 1 
} 

그러나 경우 매우 다른이에

Card d = deck.get(++i); 
// mean: 
// i++; // increase i before take from deck 
//card d = deck.get(i); 

기본, 우리가 i++ 부분으로 이동 for 루프 대신 함수 본문에서 증가 시키십시오. 그래서 우리는 "정상적인 루프"를 변경할 수 있습니다 :이 코드는 사용자의 예에서와 같이 쓰는 이유는 아직 모른다 : @

for (int i =0; i < deck.size(); i++) { 
    Card d = deck.get(i); 
} 

. :)