java - 尝试洗牌时出现 IndexOutOfBoundsException

标签 java random shuffle

<分区>

我正在尝试洗牌。

public void shuffle()
{
    int rand1;
    int rand2;
    Random randomGenerator = new Random();

    for (int i = 0; i < deck.size(); i++) {

        // pick a random index between 0 and size of the deck - 1
        rand1 = randomGenerator.nextInt(10);
         rand2 = randomGenerator.nextInt(10);

        // swap rand1 and rand2
        Card temp = deck.get (rand1);
        deck.set(rand1, deck.get (rand2)); 
        deck.set(rand2, temp); 
    }
}

然后它说:

java.lang.IndexOutOfBoundsException; Index:8; size:4(in java.util.ArrayList)

怎么了?

最佳答案

这一行

rand1 = randomGenerator.nextInt(10);

应该是

rand1 = randomGenerator.nextInt(deck.size());

rand2 也是如此。

关于java - 尝试洗牌时出现 IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17247364/

相关文章:

Java DayOfWeek 将日期名称(字符串)转换为日期编号

java - 从 MySQL、JDBC 接收到的带有大型 ResultSet 的数据包乱序

java - 如何忽略随机数生成器中的负值

string - 在 Swift 中改组字符串 - 不支持交换位置

javascript - 单击按钮时的随机播放功能

java - 我应该在哪里放置图像以使用它来创建新的 Swing ImageIcon 对象?

java - 方法不明确 - Java

c++ - 如何将范围设置为随机库

java - 使用for循环的随机数加法器

PHP 单行数组洗牌不起作用