public static void main(String[] args){
int size = 90;
ArrayList<Integer> list = new ArrayList<Integer>(size);
for(int i = 1; i <= size; i++) {
list.add(i);
}
Random rand = new Random();
while(list.size() > 0) {
int index = rand.nextInt(list.size());
System.out.println("BOY: "+list.remove(index));
System.out.println("Girl: "+list.remove(index));
}
}
}
以下是我所做的,并且仍在线程“main”java.lang.IndexOutOfBoundsException: Index: 45, Size: 45.
中获得Exception
我该怎么做才能解决这个问题。
答案 0 :(得分:1)
一般算法是将男孩和女孩放入一个列表,然后使用Collections.shuffle(arrayList);
随机化订单。
之后,您只需为您指定的每个座位拨打list.remove(0)
。
答案 1 :(得分:1)
对于当前的代码,你必须为一个男孩随机获得一个随机的女孩。
错误是因为如果random给出了列表的大小,那么您将尝试删除最后一个元素两次。
现在,您的代码将为您提供45个女孩席位和45个男孩席位。要解决它,请在while
中使用两个if语句 if(list.size()>10){
//get a random for a boy and then a random for a girl
}else{
//get a random for a girl
}
答案 2 :(得分:0)
java.lang.IndexOutOfBoundsException: Index: 45, Size: 45
。
原因是您正在访问45
列表大小的索引45
。从列表中随机删除元素时,列表大小会减小。因此,每次运行程序时,Index: 45, Size: 45
都会发生变化。
作为解决方案,您可以更改:
int index = rand.nextInt(list.size());
要:
int index = rand.nextInt(list.size()-1);
以上行将从列表大小中随机化一个值。