我一直坚持这个问题,但我想我已经意识到我的牌组构建器最终会制作一副牌,循环中的最后一个值都是相同的。
这是我的套牌构建者和牌手准备者的代码。它包括一个对象 Card,它接受两个整数,这里是 v 和 s。以及要发的五张牌的 ArrayList。如果您能提供一些帮助,我将不胜感激!
public ArrayList buildDeck(){
ArrayList<Card> newDeck = new ArrayList<Card>(52);
for(int v=0;v<13;v++)
for(int s=0;s<4;s++) {
Card nextCard = new Card(v,s);
newDeck.add(nextCard);
}
return newDeck;
}
public ArrayList fiveDeal() {
ArrayList<Card> handOfFive = new ArrayList<Card>(0);
for(int d=0;d<5;d++)
{
handOfFive.add(cardDeck.get((gen.nextInt(cardDeck.size()))));
}
return handOfFive;
}
这是我的 Card 类
public class Card
{
public static String value;
public static String suit;
public Card()
{
value="100";
suit="Cards";
}
public Card(int v, int s)
{
if(v==0)
value="Jack";
if(v==1)
value="Ace";
if(v==11)
value="Queen";
if(v==12)
value="King";
else
value = String.valueOf(v);
if(s==0)
suit="Clubs";
if(s==1)
suit="Spades";
if(s==2)
suit="Diamonds";
else
suit="Hearts";
}
public static String getCard(Object Card)
{
return value + " of " + suit;
}
}
最佳答案
正如 Marko Topolnik 预期的那样,错误出现在您的 Card
类中。改变
public static String value;
public static String suit;
至
public String value;
public String suit;
解决您当前的问题。
静态
属性属于类本身,而非静态属性属于该类的特定实例。
此外,我将使用 private
访问修饰符而不是 public
并使用 getter/setter 方法来访问变量(eclipse 可以为您生成方法)。这样它们就会被封装起来,您可以控制它们的访问和修改方式。
关于java - 如何让我的 ArrayList 添加 52 个唯一的对象而不是全部相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16276431/