我已经做了一个测验应用程序,它使用int []数组来设置答案的位置。该数组必须填充数字0,1,2和3,但必须随机放置(并且只出现一次)。我设法做的唯一方法是这样的:用随机数填充int []
public int[] castRanInt(){
int ran_int[] = new int[4];
Random random = new Random();
boolean state = true;
ran_int[0] = random.nextInt(4);
while (state) {
for (int r = 1; r < 4; r++) {
ran_int[r] = random.nextInt(4);
}
state = false;
for (int a = 0; a < 4; a++) {
for (int b = 0; b < 4; b++) {
if (a == b) {
continue;
}
if (ran_int[a] == ran_int[b]) {
state = true;
}
}
}
}
return ran_int;
}
唯一的问题是,这往往需要多达100次的循环,而只是为了填充阵列。有没有更简单/更快的方法来做到这一点?
用'1; 2; 3; 4'填充数组,然后洗牌。你可以使用'Collections.shuffle'来洗牌集合,并且可能有一个等价的数组。 –