繁体   English   中英

我不明白这个循环

[英]I don't understand this loop

我正在尝试用Java制作纸牌游戏,我想让纸牌显示其西服和编号,所以一个4颗钻石将是4(钻石),除了(钻石)将是U + 2666 Unicode 。

我在书中展示卡片套装的示例如下,但我并不十分了解。 我习惯于使用i <0,i ++的循环。 有人可以帮忙解释一下,还是至少可以将其与普通的for循环进行比较? 谢谢!

另外,我可以只使用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();
}

这是一种特殊的循环,称为“ for each”。 这意味着它将按顺序遍历hand.getCards()返回的数组或列表中的每个对象。 例如,如果它是一张读{{10“,” J“,” Q“,” K“,” A“}的纸牌数组,它将获取Card对象并按该顺序循环遍历它们。 它是为方便程序员而编写的,也使对“每个方面”了解的人都更容易阅读代码。

这称为for-each增强的for循环。 此循环遍历数组/集合的元素,而不遍历索引。 例如, for

 for (Card card : hand.getCards())

将遍历getCards()方法返回的数组/集合。 元素的类型在Card card中指定。 您将能够通过card访问每个元素,因此可以从Card类中调用方法,例如

card.getRank()

那是一个特殊的“增强循环”。 在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出现时,它合并了用于循环遍历数组的新语法。 那就是你在这里看到的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM