Java - war 游戏 - 从数组中获取对象

标签 java arrays arraylist

我是 Java 新手,我很难理解其中一个概念。

我目前正在做的作业是卡牌游戏 war 。当前的指示是让我从一副牌中随机取出一张牌。

我创建了一个数组,但它是 Card 类的数组。该类基本上通过将 int 和 String 添加在一起来创建卡片。然后我从该类创建了数组。在我看来,我的数组中既没有 int 也没有 String,对吗?

现在我需要从牌组中随机取出一张牌并将其交给玩家。这就是我迷路的地方。我想我可以使用 Random 来删除随机卡,但我似乎总是遇到错误。

我并不是要求你为我做作业,但如果你愿意,请为我指出正确的方向,并在我感到困惑时纠正我。

我目前正在学习的类(class):

import java.util.Random;
import java.util.*;

public class War3
{

    Random ran = new Random();

    public FullDeck randomCard()
    {
        ArrayList <FullDeck> randCard = new ArrayList <FullDeck> (52);

        int index = ran.nextInt(randCard.size());
        FullDeck x = randCard.remove(index);
        return x;
    }

    public void display()
    {
         System.out.println("Your card is" + randomCard());

    }
}

整个项目需要澄清Java - War Game - Gist

提前非常感谢。

最佳答案

ArrayList <FullDeck> randCard = new ArrayList <FullDeck> (52);

这会创建一个ArrayList 。您不需要指定数字 52,因为 ArrayList s 动态增长,而不是 Array s。该调用类似于 ArrayList <FullDeck> randCard = new ArrayList <FullDeck> (); ,区别在于您使用的构造函数设置 ArrayList初始容量到 52。这绝不限制 ArrayList 的大小。不过。

无论如何,您正在创建一个新的空 ArrayList 。那么你想要size ,但由于您没有将任何内容放入列表中,因此它仍然是空的,大小为零。然后您尝试调用ran.nextInt(0) ... nextInt(int n)期望一个大于零的数字。来自javadoc:

public int nextInt(int n) {
 if (n <= 0)
  throw new IllegalArgumentException("n must be positive");

关于Java - war 游戏 - 从数组中获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22732633/

相关文章:

java - 如何从 Java 中的 ArrayList 中删除特定对象?

java - 在 spring mvc hibernate 应用程序中从字符串转换为 blob 时出错

java - 添加额外的 getter 和 setter 后出现 JPA 异常

java - java中什么是阻塞模式

ios - Swift 每隔一个项目追加到数组

javascript - 在数组中查找最大值及其在 javascript 中的对应项

java - 无法迭代传递给方法的列表

java - Jetty RewriteHandler 和 RewriteRegexRule

java - 我生成数组元素的所有组合的函数有什么错误?

java - 在 java 中对 Arraylist<String> 的 ArrayList 进行排序