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



我是Java的新手,我对其中一个概念的理解有困难。

我现在的作业是纸牌游戏战争。当前的指令是让我从一副牌中随机取出一张牌。

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

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

我不是要你帮我做作业,但是如果你能给我指出正确的方向,如果我感到困惑的话,请纠正我。

目前正在学习的课程:

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 -战争游戏-要点

提前感谢。

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

创建一个ArrayList。您不需要指定数字52,因为与Array s相反,ArrayList s是动态增长的。调用类似于ArrayList <FullDeck> randCard = new ArrayList <FullDeck> ();,不同之处在于您使用的构造函数将ArrayList初始容量设置为52。但这并没有限制ArrayList的大小。

无论如何,您正在创建一个新的,空的ArrayList。然后你想要size,但由于你没有把任何东西放入列表,它仍然是空的,大小为0。然后你试着呼叫ran.nextInt(0)nextInt(int n)期望一个大于零的数字。来自javadoc:

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

我看到两个问题:

  1. 您正在创建一个ArrayList,它可以保存FullDeck类的52个实例的引用,但您没有向其添加任何内容。你需要做一些像randCard.add(new FullDeck()) 52次/循环**。然后你可能会想要"洗牌",看看这个问题如何做。
  2. 你的命名有点奇怪…FullDeck类实际上似乎应该重命名为Card,而randCard变量应该重命名为fullDeck……在你添加了52张卡片之后。

**编辑:实际上,一副牌的生成将更复杂,以确保你没有任何重复的卡。

最新更新