0

大家好,我有以下代码行

solution first = mylist.remove((int)(Math.random() * mylist));

这给了我一个错误说明

The operator * is undefined for the argument type(s) double, ArrayList<solution>

我正在尝试从我的 ArrayList 中删除我的 arrayList 中的一个随机数

任何帮助都将不胜感激。

4

2 回答 2

4

看起来您正试图从列表中删除一个随机元素。要使用随机索引覆盖所有元素,您需要列表大小。

将数字乘以 是没有意义的ArrayList。您无法通过在代码中直接指定列表来获得列表的大小。调用size()列表中的方法。这将返回一个int可以相乘的值。

于 2013-03-04T18:15:21.490 回答
0

您需要在列表大小范围内找到一个随机数

final Random random = new Random();

mylist.remove(random.nextInt(myList.size()));

确保创建Random并存储它,否则它可能会重复创建相同的数字(它只是伪随机的)。

此外,该nextInt方法排除了上限,因此mylist.size()不会返回无效索引。

于 2013-03-04T18:24:42.650 回答