use*_*349 1 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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后它说:
java.lang.IndexOutOfBoundsException; Index:8; size:4(in java.util.ArrayList)
Run Code Online (Sandbox Code Playgroud)
怎么了?
这条线
rand1 = randomGenerator.nextInt(10);
Run Code Online (Sandbox Code Playgroud)
应该
rand1 = randomGenerator.nextInt(deck.size());
Run Code Online (Sandbox Code Playgroud)
并且类似地rand2.