【发布时间】:2021-01-12 20:21:23
【问题描述】:
我正在尝试创建洗牌器方法,但目前遇到了 IndexOutOfBounds 异常的问题。我似乎无法理解为什么即使在完成代码之后也会出错。
public static ArrayList<Card> shuffle(ArrayList<Card> currDeck) {
var newDeck = new ArrayList<Card>();
int length = currDeck.size();
Random rand = new Random();
int counter = 0;
while (length != 0) {
int index = rand.nextInt(length - 1);
newDeck.set(counter, currDeck.get(index));
currDeck.remove(currDeck.get(index));
length --;
counter ++;
}
return newDeck;
}
谢谢!
【问题讨论】:
-
那么,哪一行和哪个值触发了错误?您是否检查过
counter的值永远不会大于牌组的大小? -
你为什么不用
Collections.shuffle(currDeck);? -
您应该使用
newDeck.add而不是newDeck.set
标签: java arraylist random card