java - 如何让我的 ArrayList 添加 52 个唯一的对象而不是全部相同?

标签 java loops arraylist unique addition

我一直坚持这个问题,但我想我已经意识到我的牌组构建器最终会制作一副牌,循环中的最后一个值都是相同的。

这是我的套牌构建者和牌手准备者的代码。它包括一个对象 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/

相关文章:

c - 在 C 语言中,在循环内声明的变量是局部变量吗?

遍历 3D 数组的 Pythonic 方式

java - 在 Java 中读取文本文件并将其添加到对象的 ArrayList 中

java - Log4j 记录到共享日志文件

Java 8 mdmp 转储文件分析器与 visualvm 添加 VM 核心转储变灰/空白

java - 在 Java 中,除了数量和类型之外,对方法参数施加约束

java - 使用数组/循环设置 JLabel 的文本

java - 错误 : java. util.Arrays$ArrayList 无法转换为 java.util.ArrayList

java - ArrayList<Object> 的快速排序

java - ImageView在滑动面板中消失