gpt4 book ai didi

java - 循环遍历枚举作为参数

转载 作者:行者123 更新时间:2023-12-01 18:55:59 25 4
gpt4 key购买 nike

所以我用 Java 编写 Blackjack 代码,并将我的花色和排名值存储在枚举中

public enum Suit
{
spades, hearts, clubs, diamonds
}



public enum Rank
{
two, three, four, five, six, seven, eight, nine, ten, jack, queen, king, ace
}

我有一个 Deck 类,它保存一叠“卡片”。卡片包含花色和等级字段。

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
}

Deck 中的构造函数应该迭代每个花色和等级,并将它们作为参数传递以创建一副 52 张牌,但它似乎卡在每个牌的最后一个值上,我最终得到 52 张 'ace俱乐部的。我不明白为什么,因为花色和等级似乎打印正确,但似乎只是当它们作为参数传递给 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
}

完整的项目可以在github上查看,如果有帮助的话。

最佳答案

卡中的花色和等级字段不应是静态的!

你的套牌字段也不应该!

静态字段是每个类的,因此您的 Card 构造函数在每次调用时都会覆盖相同的值。

关于java - 循环遍历枚举作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13925391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com