通过迭代枚举来分配参数

时间:2016-01-31 03:54:53

标签: java for-loop enums iteration bag

我试图创建一些Card对象并将其添加到包中。 Card对象具有其套装和等级的枚举值,我真的试图避免必须创建52个唯一对象 - 一次一个。我想通过迭代这个类的Rank enum(Suits也是一个枚举)来分配排名,如下所示:

    <activity android:name=".MainActivity"
              android:configChanges="keyboardHidden|orientation|screenSize">
    </activity>

Card构造函数如下所示:

for (Card.Ranks r: Card.Ranks.values())
{
    theShoe.addItem(new Card(Card.Suits.Diamonds, Card.r.values()));
    theShoe.addItem(new Card(Card.Suits.Hearts, Card.r.values()));
    theShoe.addItem(new Card(Card.Suits.Spades, Card.r.values()));
    theShoe.addItem(new Card(Card.Suits.Clubs, Card.r.values()));
}

但它肯定不起作用。 Eclipse要求我创建一个字段或常量&#34; r&#34;在卡类。 :/还有另一种方式让我这样做吗? 我试过删除&#34; .values()&#34;在每一行的末尾,但这也不起作用。如果有人能帮助我理解我做错了什么以及我能以某种方式修复它,我真的很感激。谢谢!

2 个答案:

答案 0 :(得分:2)

根据您的构造函数,传递SuitRank。像,

for (Card.Ranks r : Card.Ranks.values()) {
    for (Card.Suit s : Card.Suit.values()) { // <-- also loop over the Suits
        theShoe.addItem(new Card(s, r));
    }
}

for (Card.Suit s : Card.Suit.values()) { 
    for (Card.Ranks r : Card.Ranks.values()) {
        theShoe.addItem(new Card(s, r));
    }
}

答案 1 :(得分:1)

您可以在枚举上调用values()方法。

for ((Card.Ranks r : Card.Ranks.values()) {
  // do what you want
}

此值()方法 由编译器隐式声明 。所以它没有在Enum doc上列出。