我正在尝试用java制作一个纸牌游戏,我想让卡片出现在他们的套装和号码上,所以4个钻石将是4个(钻石),除了(钻石)将是U +2666 unicode。
我在书中展示卡片套装的例子如下,但我并不理解。我习惯于使用i< 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();
}
答案 0 :(得分:1)
这是一种称为“for each”的特殊循环。这意味着它按顺序循环遍历每个对象,在hand.getCards()返回的数组或列表中。例如,如果它是一组读取{“10”,“J”,“Q”,“K”,“A”}的卡片,它将获得Card对象并按顺序循环遍历它们。它是为了方便程序员而编写的,它还使那些理解“为每个人”的代码更具可读性。
答案 1 :(得分:1)
这称为for-each或enhanced for循环。此循环遍历数组/集合的元素,而不是索引。例如,这个for
:
for (Card card : hand.getCards())
将迭代方法getCards()
返回的数组/ Collection。元素的类型在Card card
中指定。您将能够通过名称card
访问每个元素,因此您可以从类Card
调用方法,如
card.getRank()
答案 2 :(得分:1)
这是一个特殊的“增强型循环”。在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问世时,它结合了一种用于循环数组的新语法。这就是你在这里看到的。