2014-02-09 34 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推出时,它为循环数组引入了一种新的语法。这就是你在这里看到的。