我试图创建一些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;在每一行的末尾,但这也不起作用。如果有人能帮助我理解我做错了什么以及我能以某种方式修复它,我真的很感激。谢谢!
答案 0 :(得分:2)
根据您的构造函数,传递Suit
和Rank
。像,
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上列出。