Java 作为参数在枚举中循环
因此,我正在用Java编写21点代码,并在枚举中存储了我的suit和rank值Java 作为参数在枚举中循环,java,loops,enums,iteration,Java,Loops,Enums,Iteration,因此,我正在用Java编写21点代码,并在枚举中存储了我的suit和rank值 public enum Suit { spades, hearts, clubs, diamonds } public enum Rank { two, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace } 我有一个甲板类,它保存了一堆“卡片”。 卡片包含适合和等级的字段 public class Ca
public enum Suit
{
spades, hearts, clubs, diamonds
}
public enum Rank
{
two, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace
}
我有一个甲板类,它保存了一堆“卡片”。
卡片包含适合和等级的字段
public class Card
{
static Suit suit;
static Rank rank;
Card(Suit suit, Rank rank)
{
this.suit = suit;
this.rank = rank;
}
public String toString()
{
return rank + " of " + suit;
}
//getters and setters ommitted
}
牌组中的构造器应该迭代每个花色和等级,并将其作为参数传递,以创建一副52张牌的牌组,但似乎卡在每张牌的最后一个值上,我最终得到52张“梅花a”。我不明白为什么,因为西服和军衔似乎打印正确,只是当它们作为参数传递给add()时,它们的行为似乎不正常
public class Deck
{
static Stack<Card> d = new Stack<Card>();
Deck()
{
if (!d.isEmpty())
{
clear(); //Empties the stack if constructor is called again
}
for (Suit suit : Suit.values())
{
for (Rank rank : Rank.values())
{
//System.out.println(suit + " " + rank);
//This seems to print the right values
add(new Card(suit, rank)); //These are stuck on 'clubs' and 'ace'
}
}
System.out.println(d);
shuffle(); //Method which shuffles the deck
}
public static void add(Card c)
{
d.addElement(c);
}
//shuffle(), clear() and other methods omitted
}
公共类甲板
{
静态堆栈d=新堆栈();
甲板()
{
如果(!d.isEmpty())
{
clear();//如果再次调用构造函数,则清空堆栈
}
for(Suit:Suit.values())
{
for(秩:Rank.values())
{
//系统输出打印项次(套装+“”+等级);
//这似乎打印了正确的值
添加(新卡(套装、等级));//这些卡卡在“俱乐部”和“王牌”上
}
}
系统输出打印ln(d);
shuffle();//洗牌组的方法
}
公共静态无效添加(卡c)
{
d、 增编(c);
}
//省略了shuffle()、clear()和其他方法
}
如果有帮助,可以在上查看完整项目。这是不正常的。您可以从
Stack
扩展Deck
public class Deck
{
static Stack<Card> d = new Stack<Card>();
public class Deck extends Stack<Card> {
//add, clear are already there from Stack
}
这是不正常的。您可以从
Stack
扩展Deck
public class Deck
{
static Stack<Card> d = new Stack<Card>();
public class Deck extends Stack<Card> {
//add, clear are already there from Stack
}
卡中的套装和等级字段不应该是静态的 你的甲板场也不应该
静态字段是每个类的,所以每次调用时,您的卡构造函数都会覆盖相同的值。卡中的套装和等级字段不应该是静态的 你的甲板场也不应该 静态字段是每个类的,因此每次调用卡片构造函数时都会覆盖相同的值。您可以在枚举上调用values()方法
for ((Rank rank : Rank.values()) {
// do what you want
}
此values()方法由编译器隐式声明。因此它没有列在枚举文档中。您可以在枚举中调用values()方法
for ((Rank rank : Rank.values()) {
// do what you want
}
此values()方法由编译器隐式声明。因此,它没有列在Enum doc上。请确保您了解静态变量是什么。您似乎误解了它们(这是您的问题的原因)。请确保您了解静态变量是什么。你似乎误解了他们(这是你问题的原因)。