我有一个生成随机数组的函数:
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
我不确定这里的问题是什么。这是一个非常简单的代码,我似乎无法开始工作。
答案 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()
会在0
和1
之间返回一个值,如果您将其转换为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快速教程。 祝一切顺利。