不兼容的类型:int []无法转换为java.util.List <java.lang.integer>

时间:2016-11-04 19:29:51

标签: java arrays list

我有一个生成随机数组的函数:

  private static List<Integer> randomIntegerArray(int n) {
    int[] array = new int[n];
    for(int i = 0; i <  array.length; i++) {
      array[i] = (int)Math.random();
    }
    return array;
  }

我收到以下错误:

  

不兼容的类型:int []无法转换为java.util.List

我不确定这里的问题是什么。这是一个非常简单的代码,我似乎无法开始工作。

5 个答案:

答案 0 :(得分:7)

您正在返回List<Integer>,但您正在创建int[]。他们是完全不同的东西!试试这个:

  private static List<Integer> randomIntegerArray(int n) {
    List<Integer> list = new ArrayList<>();
    for(int i = 0; i < n; i++) {
      list.add((int) Math.random()); // always returns 0
    }
    return list;
  }

或者,如果您肯定想使用数组,请更改方法的声明:

private static int[] randomIntegerArray(int n)

请注意,Math.random()会在01之间返回一个值,如果您将其转换为int,那么 总是 be 0

答案 1 :(得分:3)

通过直接使用Random类,您可以使用更简单的代码实际生成随机整数而不是零:

private static List<Integer> randomIntegerArray(int n) {
  return ThreadLocalRandom.current().ints(n).boxed().collect(Collectors.toList());
}

这可能会返回任何Integer值;您可以使用ints() method.

的其他参数指定范围

答案 2 :(得分:0)

奥斯卡答案的另一种选择是:

private static int[] randomIntegerArray(int n) {
    int[] array = new int[n];
    for(int i = 0; i < array.length; i++) {
        array[i] = (int)Math.random();
    }
    return array;
}

正如其他人所说,List类型Integer与类型int的数组不同。

答案 3 :(得分:0)

可能这不是最好的选择,但也有效,尽管你会得到一个零整数列表,如Peter Lawrey所说:

private static List<Integer> randomIntegerArray(int n) {
    Integer[] array = new Integer[n];

    for(int i = 0; i <  array.length; i++) {
        array[i] = Double.valueOf(Math.random()).intValue();
    }
    return Arrays.asList(array);
}

答案 4 :(得分:0)

您的错误告诉您数组和列表不兼容,快速搜索会显示您将方法转换为另一个,如Arrays.asList()。 其次,Math.random返回介于0.0和0.9之间的随机数,因此您需要乘以所需的数字。 您可能需要首先阅读Java快速教程。 祝一切顺利。