我是Java新手,我无法理解其中一个概念。
我目前正在进行的任务是纸牌游戏“战争”。目前的说明是我从一副牌中删除随机卡。
我创建了一个数组,但它是一个类Card的数组。该类通过基本上将int和String一起添加来创建卡。然后我从该类创建了数组。在我看来,我的数组中既没有int也没有String,这是正确的吗?
现在我需要从牌组中移除一张随机牌并将其交给玩家。这是我迷路的地方。我想我可以使用随机删除随机卡,但我似乎总是得到一个错误。
我不是要求你为我做任务,但如果你愿意,请指出我正确的方向,如果我感到困惑可能会纠正我。
我目前正在上课:
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
非常感谢提前。
答案 0 :(得分:0)
我看到两个问题:
ArrayList
,可以持有对FullDeck
类的52个实例的引用,但您不会向其中添加任何内容。你需要在循环中执行randCard.add(new FullDeck())
52次/次**。那么你很可能想要&#34; shuffle&#34;在甲板上,请参阅this question了解如何做到这一点。FullDeck
类似乎应该重命名为Card
,并且randCard
变量应该重命名在你添加了52张卡之后,fullDeck
之类的东西...... **编辑:实际上,为了确保你没有任何重复的牌,一副牌的生成会更加复杂。
答案 1 :(得分:0)
ArrayList <FullDeck> randCard = new ArrayList <FullDeck> (52);
这会创建一个ArrayList
。您不需要指定数字52,因为ArrayList
是动态增长的,而不是Array
。这个电话类似于
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");