gpt4 book ai didi

java - 使用 ArrayList 创建一副纸牌

转载 作者:行者123 更新时间:2023-11-30 08:17:57 26 4
gpt4 key购买 nike

我知道以前很多人都问过这个问题(来这里之前我四处看了看),但我似乎无法弄清楚如何修复我的代码。我的任务是制作一个静态的 makeDeck 方法,该方法返回一个包含一副标准纸牌的 52 张纸牌的 ArrayList。我是 ArrayLists 的新手,所以我不完全确定我是否正确初始化了我的 ArrayList makeDeck。这是我目前所拥有的:

    public class Card 
{
private String mySuit;
private int myValue;

public Card( String suit, int value )
{
mySuit = suit;
myValue = value;
}

public String name()
{
String[] cardNames =
{
"Deuce", "Three", "Four", "Five",
"Six", "Seven", "Eight", "Nine", "Ten",
"Jack", "Queen", "King", "Ace"
};

return cardNames[ myValue - 2 ] + " of " + mySuit;
}
}

public class MainClass
{
public static void displayCards( ArrayList<Card> a )
{
int i;
System.out.println( "Size is " + a.size() );
for ( i = 0 ; i < a.size() ; i++ )
{
Card c = a.get( i );
System.out.println( "#" + (i+1) + ": " + c.name() );
}
}

public static ArrayList<Card> makeDeck()
{
ArrayList<Card> cards = new ArrayList<Card>();
String[] cardNames =
{
"Deuce", "Three", "Four", "Five",
"Six", "Seven", "Eight", "Nine", "Ten",
"Jack", "Queen", "King", "Ace"
};
String[] suits = { "spades", "hearts", "diamonds", "clubs" };

for (int a=0; a<=cardNames.length(); a++)
{
for (int b=0; b<= suits.length(); b++)
{
cards.add(new Card(cardNames[a], suits[b])); //I've noticed many people use this to add the card names and suits to the cards ArrayList, and it gives me an error of not being able to turn suits[b] into an integer, so I'm confused as to how it worked for others

}
}
return cards;
}

public static void main( String[] args )
{
System.out.println(makeDeck());
}

如果有人能帮我弄清楚我做错了什么,我将不胜感激。谢谢!

最佳答案

您正在将两个字符串传递给您的Card 构造函数。在您编辑掉 Card 类的代码之前,我看到您的构造函数需要一个 String 和一个 int。这就是构造函数调用无法编译的原因。

此外,您忘记在makeDeck() 方法中返回一个值,并且您的cards 列表是该方法的本地列表,因此您无法访问它从你的 main 方法,你没有 cards() 方法。

你的主要方法应该是:

public static void main( String[] args )
{
System.out.println(makeDeck());
}

您的 makeDeck() 应该在其最后一行有一个 return cards; 语句。

并且您应该更改 Card 类的构造函数或更改传递给它的参数。

对于您的 Card 类的当前实现,您可能应该将 Card 创建循环更改为:

    for (int a=0; a < suits.length; a++)
{
for (int b=0; b< 13 ; b++)
{
cards.add(new Card(suits[a],b));
}
}

不过,您可能必须更改 Cardname() 方法。

关于java - 使用 ArrayList 创建一副纸牌,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27880830/

26 4 0