我是 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/