使用2个不同的ENUMS在Java中构建一副纸牌

我有一个上课的实验室(我们可以寻求外部帮助)来制作克朗代克单人纸牌。在编程方面,我是个菜鸟(这是我有史以来第一次上编程课)。我们刚刚了解了枚举,我必须使用它们来构建一个平台(我已经查看了有关此问题的其他问题,但是我还没有找到符合我需要的解决方案)。我们有两个枚举(等级和级别):

public enum Rank {

ACE,

TWO,

THREE,

FOUR,

FIVE,

SIX,

SEVEN,

EIGHT,

NINE,

TEN,

JACK,

QUEEN,

KING;}

public enum Suit {    

CLUBS,

SPADES,

HEARTS,

DIAMONDS;}

现在,我需要将它们组合到一个名为Deck的数组中,其形式如下:

public Deck() {

cards = new Card[52];

}

为了将卡片放入卡座,我一直在尝试使用“ .values”,但我做对了。这个实验室有一个测试代码,它说我没有得到任何要点。我究竟做错了什么?

    public void fill() {

for (int i = 0; i<52;i++){

for (Suit s : Suit.values()) {

for (Rank r : Rank.values()) {

cards[i]= new Card(r,s);

}

}

}

}

任何帮助深表感谢。谢谢!

回答:

你说

现在,我需要将它们组合到一个名为Deck的数组中,其形式如下:

不,您需要创建一个类Card,其中每个枚举都有一个字段。只有这样做之后,您才能创建卡片组。这样做-

创建一个Card类,至少给它两个字段,每个枚举一个,再加上一个适当的构造函数,再加上getters,再加上一个像样的东西toString(),然后就可以开始了。

另外,这是错误的:

public void fill() {

for (int i = 0; i<52;i++){ // get rid of this loop

for (Suit s : Suit.values()) {

for (Rank r : Rank.values()) {

cards[i]= new Card(r,s);

}

上面的代码将尝试将52张卡塞入每个索引位置。例如,它将尝试将所有52张卡塞入cards [0]点,与cards

[1]项相同,仅添加最后一张Card。您将拥有52个钻石之王的阵列-这不是您想要的。

取而代之的是,摆脱外部循环,而在循环内部增加i:

public void fill() {

int i = 0;

for (Suit s : Suit.values()) {

for (Rank r : Rank.values()) {

cards[i]= new Card(r,s);

i++; // increment i here

}

}

}

以上是 使用2个不同的ENUMS在Java中构建一副纸牌 的全部内容, 来源链接: utcz.com/qa/415223.html

回到顶部