gpt4 book ai didi

Java 扑克牌全部相同

转载 作者:行者123 更新时间:2023-12-01 23:05:08 25 4
gpt4 key购买 nike

我创建了一副牌 Card[52] theDeck,它似乎只包含黑桃 K。我不认为构造函数有什么问题,但我是java新手,所以我可能是错的......这是套牌构造函数:

public class Deck {

private Card[] theDeck;
private int top;
// add more instance variables if needed

public Deck(){
theDeck = new Card[52];
for(int s = 1; s <= 4; s++)
{
for (int v = 1; v <= 13; v++)
{
for (int i = 0; i < theDeck.length; i++)
{

theDeck[i] = new Card(s,v);
}
}
}
}

它应该创建 52 个不同的 Card 对象,但是当我打印它时,每张牌都是 Card(4,13) - 黑桃 K。

这是 Card 构造函数,以防万一:

public class Card implements Comparable<Card>
{

private int suit;
private int value;

public Card(int s, int v)
{ //constructor of an object Card
suit = s;
value = v;
//make a card with suit s and value v
}

最佳答案

你有三个循环,你的循环遍历这副牌的整个范围 - 并为其分配一张不依赖于索引的牌:

for (int i = 0; i < theDeck.length; i++)
{
theDeck[i] = new Card(s,v);
}

因此,对于 sv 的每个值,您都将使用同一张卡覆盖整个牌组。您创建的最后一张牌是黑桃王,因此出现了问题。

我怀疑您根本不想要该内部循环 - 相反,根据 sv 计算出要使用的索引:

for (int s = 1; s <= 4; s++)
{
for (int v = 1; v <= 13; v++)
{
int index = (s - 1) * 13 + (v - 1);
theDeck[index] = new Card(s, v);
}
}

或者保留一个单独的index变量并增加它:

int index = 0;
for (int s = 1; s <= 4; s++)
{
for (int v = 1; v <= 13; v++)
{
theDeck[index] = new Card(s, v);
index++;
}
}

关于Java 扑克牌全部相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22904482/

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