【问题标题】:Create a stack of cards创建一堆卡片
【发布时间】:2022-01-02 06:35:18
【问题描述】:

我目前有以下卡类;

public class Card {

    /** hearts, diamond, club, spades */
    private String suit;

    /** ace, 2, 3, 4, 5, 6, 7, 8, 9, 10, jack, queen, king */
    private String rank;

    /** 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 */
    private int pointValue;

    public Card(String cardSuit, String cardRank, int cardPointValue) {
        /** initialise a new card with the given values for suit rank and point value */
        suit = cardSuit;
        rank = cardRank;
        pointValue = cardPointValue;
    }

    /** accessor methods - help client access private instance fields - oop*/
    public String getSuit() {
        return suit;
    }

    public String getRank() {
        return rank;
    }

    public int getPointValue() {
        return pointValue;
    }

    /** test to see if card given from values above matches card given as parameter to this argument*/
    public boolean matches(Card otherCard) {
        return otherCard.getSuit().equals(this.getSuit())
        && otherCard.getRank().equals(this.getRank())
        && otherCard.getPointValue() == this.getPointValue();
    }

    /** overriding toString method allows us to output meaningful content as default function returns gibberish (essentially) */
    @Override
    public String toString() {
        return rank + " of " + suit + " (point value = " + pointValue + ")";
    }
}

我想创建一组所有可能的卡片组合,以显示沿线的输出;

Six of Hearts (value = 6)
Ace of Clubs (value = 1)

我有以下甲板课程,但我卡住了从这里去哪里;

public class Deck {
    String suit[] = {"Hearts", "Clubs", "Diamonds", "Spades"};
    String rank[] = {"Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "King", "Queen", "Ace"};
    int pointValue[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
    Card[] deck = new Card[52];
}

谢谢

【问题讨论】:

  • Deck 有一个 Cards 数组,但该数组的每个元素都是空的。考虑添加一个构造函数来初始化每个元素。此外,还不清楚为什么Deck 会有suit[]rank[]pointValue[](因为每张卡都为自己定义了这些属性)。
  • 迭代suits,迭代ranks,为每个组合创建一个Card。 --- 关于代码的一些注释:西装和军衔是Enums 的主要候选者。我建议阅读有关该主题的教程,例如this one from oracle.com。 - 虽然可以将数组括号写在变量名之后,但我们通常将它们写在类型之后,因为它们会影响类型(String suit[] -> String[] suit, String rank[] -> String[] rank
  • 那么我应该将枚举数据类型放在我的卡片类还是卡片组类中?

标签: java stack


【解决方案1】:

您可以这样创建组合:

List<Card> deck = new ArrayList<Card>();
for(int i=0;i<suit.length;i++)
{
    for(int j=0;i<rank.length;j++)
    {
        Card card = new Card(suit[i], rank[j], pointValue[j]);
        deck.add(card);
    }
}

【讨论】:

  • 很遗憾我不能使用数组列表
猜你喜欢
  • 2018-12-13
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 2021-08-11
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
  • 2021-01-31
相关资源
最近更新 更多