java - Arrays.asList(an_array).contains(an_integer) 总是 false。为什么?

标签 java arrays

我正在尝试构建一个彩票程序,我想检查以前的中奖号码(数组内)中是否已经存在一个号码。所以我正在尝试这个

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(writingNumbers).contains(randomNums) 总是 false,无论数字是否存在,因此 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(lookingNumbers).contains(randomNums) 总是错误的。我在这里做错了什么?

感谢您的宝贵时间。

最佳答案

问题在于 varargs 方法的解释 Arrays.asList 。它将类型解释为 int[] ,以便您收到 List<int[]> ,不是List<Integer> 。因此,您传入的数字都不等于 int[] .

您可以声明winningNumbersInteger 的数组s,以便数组将按照您的预期进行解释,并且您会收到 List<Integer>后退。你自己的findIfExist该方法也很有效。

关于java - Arrays.asList(an_array).contains(an_integer) 总是 false。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21197930/

相关文章:

ruby-on-rails - 如何遍历 JSON 数组以获取键的值?

java - 是否有 dependentOnMethods TestNG 功能的隐式替代方案? (按相关顺序运行测试)

java - 在java 7中检测按下的键

java - 转换为 Dalvik 格式失败 : Unable to execute dex: Java heap space

python - 如何从 pydub AudioSegment 创建一个 numpy 数组?

arrays - 如何快速获取重数数组

java - 覆盖由 jackson-datatype-hibernate 生成的 id 名称

java - 为返回的字符串值设置参数

python - 返回两个 3xN 数组的叉积的方法(例如时间相关向量)

java - 处理 BufferedImage 中的像素