【发布时间】:2014-01-17 23:33:00
【问题描述】:
我正在尝试构建一个彩票程序,并且我想检查一个数字是否已经存在于之前的中奖号码中(在数组内)。所以我正在尝试这个
int[] winningNumbers = new int[6]; //array holding 6 random numbers
for(i = 0; i < winningNumbers.length; i++ ){
int randomNums = new Random().nextInt(49) + 1;
while (Arrays.asList(winningNumbers).contains(randomNums)){
System.out.println(Arrays.asList(winningNumbers).contains(randomNums));//always false
randomNums = new Random().nextInt(49) + 1;
}
winningNumbers[i] = randomNums ;
System.out.println(winningNumbers[i]);
}
Arrays.asList(winningNumbers).contains(randomNums) 始终为假,无论数字是否存在,因此从未执行过 while 循环,因此我通过编写方法解决了它
public static boolean findIfExist(int a[], int x){
for (int i=0; i<a.length; i++){
if (a[i]==x){
return true;
}
}
return false;
}
我的问题是为什么 Arrays.asList(winningNumbers).contains(randomNums) 总是错误的。我在这里做错了什么?
感谢您的宝贵时间。
【问题讨论】:
-
Arrays.asList不会像您期望的int[]那样工作。您必须使用Integer[]或使用替代方法。 -
我建议使用一个集合,然后使用一段时间,因为 set.size 小于 6