gpt4 book ai didi

java - 如何访问对象中的对象?

转载 作者:行者123 更新时间:2023-11-29 08:02:49 25 4
gpt4 key购买 nike

我正在尝试构建一个 21 点游戏。我已经创建了一个卡片组,现在我想展示它。

我知道我做错了什么,因为我无法访问 CardStack 类中的 displayStack。另外,我有一种感觉,我没有正确地进行继承。我该如何解决这个问题?

这是我的代码:

public class CreateCardDeck {
int deckSize = 52;
CardStack cardStack = new CardStack(deckSize);

public void CreateDeck() {
String[] suit = {"clubs", "diamonds", "hearts", "spades"};
int[] rank = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};

for (int i = 0; i < rank.length; i ++) {
for (int j = 0; j < suit.length; j++) {
cardStack.push(suit[j], rank[i]);
}
}
}
}

卡片类:

class Card {
String suit;
int rank;

Card(String suit, int rank) {
this.suit = suit;
this.rank = rank;
}

public String getSuit() {
return suit;
}

public String getRank() {
String nameTheRank;
if (rank == 1)
nameTheRank = "Ace";
else if (rank == 11)
nameTheRank = "Jack";
else if (rank == 12)
nameTheRank = "Queen";
else if (rank == 13)
nameTheRank = "King";
else
nameTheRank = String.valueOf(rank);
return nameTheRank;
}
}

CardStack 类:

class CardStack {
public void displayDeck() {
for (int i = 0; i < stackArray.length; i ++)
System.out.println(stackArray[i]);
}
}

主类:

public class MainClass {
public static void main(String[] args) throws IOException {
CreateCardDeck c = new CreateCardDeck();
c.CreateDeck();
// How to display my deck?
}
}

最佳答案

首先,我会重新设计您的类型。 CreateCardDeck 听起来应该是 CardDeck 或可能只是 Card 类型中名为 createDeck 的静态方法。听起来花色和数字的知识不应该真正成为该方法的一部分。卡片通常用作 Java 中枚举的演示 - 一种枚举表示值(A 到 K),另一种表示花色。

想一想拥有 CreateCardDeck实例 真正意味着什么 - 这对您来说真的有意义吗?它感觉更像是一个动词(一种方法)而不是一个名词(一种类型)。

现在您可以有一个 CardDeckFactory 或类似的东西 - 但我不希望牌组成为对象状态的一部分;它只会由一个方法返回。

关于java - 如何访问对象中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13374595/

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