创建一堆卡片
Posted
技术标签:
【中文标题】创建一堆卡片【英文标题】: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
有一个 Card
s 数组,但该数组的每个元素都是空的。考虑添加一个构造函数来初始化每个元素。此外,还不清楚为什么Deck
会有suit[]
、rank[]
和pointValue[]
(因为每张卡都为自己定义了这些属性)。
迭代suit
s,迭代rank
s,为每个组合创建一个Card
。 --- 关于代码的一些注释:西装和军衔是Enum
s 的主要候选者。我建议阅读有关该主题的教程,例如this one from oracle.com
。 - 虽然可以将数组括号写在变量名之后,但我们通常将它们写在类型之后,因为它们会影响类型(String suit[]
-> String[] suit
, String rank[]
-> String[] rank
)
那么我应该将枚举数据类型放在我的卡片类还是卡片组类中?
【参考方案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);
【讨论】:
很遗憾我不能使用数组列表以上是关于创建一堆卡片的主要内容,如果未能解决你的问题,请参考以下文章
使用 ForEach 分层视图并使用 ZStack 偏移以创建一堆扑克筹码 (SwiftUI)
页面打桩插件Alvaro Trigo。创建一堆滚动的部分。http://alvarotrigo.com/pagePiling/