【发布时间】: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 fromoracle.com。 - 虽然可以将数组括号写在变量名之后,但我们通常将它们写在类型之后,因为它们会影响类型(String suit[]->String[] suit,String rank[]->String[] rank) -
那么我应该将枚举数据类型放在我的卡片类还是卡片组类中?