2014-02-09 4 views
0

나는 자바로 카드 게임을 만들려고하고있다. 나는 그들의 소송과 번호로 카드를 보여주고 싶다. 그래서 다이아몬드 4 개는 다이아몬드 4 개가 될 것이다. (다이아몬드)는 U + 2666 유니 코드입니다.나는이 루프를 이해하지 못한다.

내 책에서 카드 소송을 표시 한 예는 다음과 같지만 실제로 이해하지는 못합니다. 나는 for를 사용하는 루프에 익숙하다. < 0, i ++. 누군가가 설명해 주거나 최소한 일반적인 루프와 비교해 볼 수 있습니까? 감사!

또는 switch 문을 사용하여 정장을 표시 할 수 있습니까?

private String getCardsDisplay() { 
    StringBuilder cards = new StringBuilder(); 


    for (Card card : hand.getCards()) { 
     cards.append(" "); 
     cards.append(card.getRank()); 


     switch (card.getSuit()) { 
      case CLUBS: 
       cards.append("\u2663"); 
       break; 
      case DIAMONDS: 
       cards.append("\u2666"); 
       break; 
      case HEARTS: 
       cards.append("\u2665"); 
       break; 
      case SPADES: 
       cards.append("\u2660"); 
       break; 
     } 
    } 
    return cards.toString(); 
} 
+1

hand.getCards()가 배열을 반환한다고 가정하면 (for your hand) 나는 for 루프 전체가 "각 카드에 대해 순위와 양복을 추가합니다"라고 읽을 수 있습니다. 기본적으로 배열의 각 요소를 반복하고 각 요소를 카드 객체로 제공합니다. – 1110101001

+0

"향상된 for 루프"또는 "for-each"루프라고합니다. 구글 그것. – ApproachingDarknessFish

답변

1

이것은 "for each"라는 특별한 종류의 루프입니다. 즉, hand.getCards()에 의해 반환 된 배열 또는 목록에서 순서대로 각 객체를 반복합니다. 예를 들어, 카드 배열이 { "10", "J", "Q", "K", "A"}이면 Card 객체를 가져오고 그 순서대로 반복합니다. 프로그래머에게 편의를 위해 작성되었으며, "각각에 대해"이해하는 사람들은 코드를 더 쉽게 읽을 수 있습니다.

1

이것은 for-each 또는 enhanced for 루프라고합니다. 이 루프는 인덱스가 아닌 배열/컬렉션 요소를 반복합니다. 예를 들어,이 for :

for (Card card : hand.getCards()) 

는 방법 getCards()에 의해 반환 된 배열/컬렉션을 반복합니다. 요소 유형은 Card card에 지정됩니다. 당신은 이름 card 각 요소에 액세스 할 수 있습니다, 그래서 당신은 "향상된 for 루프"특별한이다

card.getRank() 
1

같은 클래스 Card에서 메서드를 호출 할 수 있습니다. Java 5 이전의 Java 버전에서는 해당 루프가 다음과 같이 작성되었습니다.

Card[] cards = hand.getCards(); 
for (int i = 0; i < cards.length; i++) { 
    Card card = cards[i]; 
    // the rest of the loop 
} 

이것은 다소 복잡합니다. 따라서 Java 5가 나왔을 때 배열을 반복하는 새로운 구문을 사용했습니다. 그것이 당신이 여기서 본 것입니다.

관련 문제