数组列表索引0大小0错误

时间:2013-11-18 01:31:01

标签: java

我正在制作卡片游戏战争的程序,我需要卡片不再出现所以我使用了数组列表。我遇到了这个数组列表的麻烦,因为它应该是随机的并删除数字,但我得到错误IndexOutOfBoundsException:Index 0,Size 0

List<Integer> values = new ArrayList<Integer>();
Random random = new Random();

Integer rand = random.nextInt(values.size()+1); 
Integer cardId = values.get(rand);
values.remove(rand);

5 个答案:

答案 0 :(得分:3)

首先将您的卡添加到您的值列表中(例如可能不是整数)。 我所说的就是这个,你需要一副牌才能玩。

答案 1 :(得分:2)

你的清单是空的,你是

1)尝试检索值

2)尝试删除值

因为列表为空而抛出错误。

旁注:您可以将randcardId定义为int,而不是Integer。自动装箱/拆箱将为您解决这个问题。

为您的列表添加值,它将按预期工作(如果您将random.nextInt(values.size()+1)更改为random.nextInt(values.size()))。

答案 2 :(得分:2)

您收到此错误是因为您尝试访问空数组的索引0,正如它所说的那样。你不能这样做。

您的代码有多个问题。

  • 您实际上并未在values中存储任何内容。

  • .get()的可接受索引范围是0到size-1。 random.nextInt(size+1)的返回范围是0到大小。这可能会产生超出范围的索引值。数组索引从0开始。

答案 3 :(得分:0)

提供数组中值的代码...或者在数组中添加值。

答案 4 :(得分:0)

您需要首先提供列表值,然后才能get

List<Integer> values = new ArrayList<Integer>();
Random random = new Random();

Integer rand = random.nextInt(values.size()+1); 

尝试此操作以放置值

for (int i = 1; i <= 52; i++){
    values.add(i);
}

Integer rand = random.nextInt(values.size() + 1);