通过遍历枚举来分配参数
Assigning Param by Iterating Through Enum
我正在尝试创建一些 Card 对象并将其添加到包中。 Card 对象的花色和等级有枚举值,我真的在努力避免创建 52 个独特的对象——一次一个。我想通过遍历 class 的 Rank 枚举(Suits 也是一个枚举)来分配等级,如下所示:
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()));
}
卡片构造函数如下所示:
public Card(Suits s, Ranks r)
{
suit = s;
rank = r;
}
但肯定不行。 Eclipse 要求我在卡片 class 中创建一个字段或常量 "r"。 :/我还有另一种方法吗?
我试过删除每行末尾的“.values()”,但这也不起作用。如果有人能帮助我理解我做错了什么并且我能以某种方式解决它,我将不胜感激。谢谢!
根据您的构造函数,传递 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));
}
}
您可以在枚举上调用 values() 方法。
for ((Card.Ranks r : Card.Ranks.values()) {
// do what you want
}
此 values() 方法 由编译器隐式声明。所以它没有在枚举文档中列出。
我正在尝试创建一些 Card 对象并将其添加到包中。 Card 对象的花色和等级有枚举值,我真的在努力避免创建 52 个独特的对象——一次一个。我想通过遍历 class 的 Rank 枚举(Suits 也是一个枚举)来分配等级,如下所示:
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()));
}
卡片构造函数如下所示:
public Card(Suits s, Ranks r)
{
suit = s;
rank = r;
}
但肯定不行。 Eclipse 要求我在卡片 class 中创建一个字段或常量 "r"。 :/我还有另一种方法吗? 我试过删除每行末尾的“.values()”,但这也不起作用。如果有人能帮助我理解我做错了什么并且我能以某种方式解决它,我将不胜感激。谢谢!
根据您的构造函数,传递 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));
}
}
您可以在枚举上调用 values() 方法。
for ((Card.Ranks r : Card.Ranks.values()) {
// do what you want
}
此 values() 方法 由编译器隐式声明。所以它没有在枚举文档中列出。