2014-02-09 36 views
0

我想用java編寫一個紙牌遊戲,並且我想讓卡片出現在他們的西裝和數字中,所以4個鑽石將是4(鑽石),除了(鑽石)將是U + 2666 unicode。我不明白這個循環

我在書中展示西服套裝的例子如下,但我不太明白。我習慣於使用循環,我使用我< 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循環可以讀取:「對於你手中的每張牌,附加等級和套裝」。它基本上遍歷數組中的每個元素,並將每個元素作爲卡對象。 – 1110101001

+0

它被稱爲「增強for循環」或「for-each」循環。去谷歌上查詢。 – ApproachingDarknessFish

回答

1

這是一種稱爲「for each」的特殊循環。這意味着它循環遍歷每個對象,依次在由hand.getCards()返回的數組或列表中。例如,如果它是一個讀取{「10」,「J」,「Q」,「K」,「A」}的牌的數組,它將獲得Card對象並按順序循環它們。它的編寫方式對程序員來說非常方便,而且它使代碼對於「瞭解每個人」的人更容易理解。

1

這稱爲for-eachenhanced for循環。該循環遍歷數組/集合的元素,而不是遍歷索引。例如,這for

for (Card card : hand.getCards()) 

將遍歷由該方法getCards()返回的數組/集合。元素的類型在Card card中指定。您將可以通過名稱card訪問每個元素,這樣你就可以從類Card調用一個方法類似

card.getRank() 
1

這是一個特殊的「增強的for循環」。在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推出時,它爲循環數組引入了一種新的語法。這就是你在這裏看到的。