我不明白这个循环

时间:2014-02-09 01:59:17

标签: java for-loop switch-statement stringbuilder

我正在尝试用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();
}

3 个答案:

答案 0 :(得分:1)

这是一种称为“for each”的特殊循环。这意味着它按顺序循环遍历每个对象,在hand.getCards()返回的数组或列表中。例如,如果它是一组读取{“10”,“J”,“Q”,“K”,“A”}的卡片,它将获得Card对象并按顺序循环遍历它们。它是为了方便程序员而编写的,它还使那些理解“为每个人”的代码更具可读性。

答案 1 :(得分:1)

这称为for-eachenhanced 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问世时,它结合了一种用于循环数组的新语法。这就是你在这里看到的。