我有一个应用程序,我随机化5个不同的整数(第一个将在启动活动后生成,其他4个将在按下按钮后)将它们用作ID以从SQLite DB中获取结果。
问题是我不希望重复这些数字,所以我制作了一个数组和一个循环以避免这种情况,但它并没有按预期工作,事实上它什么也没做。代码如下所示:
mult_by_2
第一个已经创建,因此每当我按下按钮int[] repeatArray = new int[5];
Integer contRep=0;
Integer myInt=0;
randomizeData();
if(contRep==0){
repeatArray[0]=myInt;
}else{
for (int i=0;i<repeatArray.length;i++){
while(myInt==repeatArray[i]){
randomizeData();
}
}
repeatArray[contRep]=myInt;
}
contRep++;
public void randomizeData(){
myInt = r.nextInt(27 - 1) + 1;
}
为1,并且第一个数字已经保存在该数组中。请注意,每当我按下按钮时,它都会执行上面的代码。我认为循环工作正常但我仍然有时会得到重复。我做错了什么?
答案 0 :(得分:0)
你必须维护一个在
ArrayOfPreviousNumbers
之前生成的随机数的数组;如果ArrayOfPreviousNumbers
中已经存在新的随机生成的数字,那么您可以进行交叉检查吗?
生成[20,80]范围内的随机数,使用
final int random = new Random().nextInt(61) + 20; // [0, 60] + 20 => [20, 80]
要检查是否已生成随机,请在ArrayOfPreviousNumbers
中使用contains