2016-11-04 594 views
-7

我有产生随机阵列的函数:不兼容的类型:INT []不能转换到的java.util.List <java.lang.Integer中>

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; 
    } 

我发现了以下错误:

incompatible types: int[] cannot be converted to java.util.List

我不确定这是什么问题。这是一个令人难以置信的简单的代码,我似乎无法工作。

+2

“List”不是数组。如果你想返回一个int数组,你的返回类型需要是'int []' – khelwood

+0

@khelwood,那么如何初始化/附加一个'List '? – 123

+0

它告诉你这个类型不能被自动转换。你必须创建你想要返回的类型。 –

回答

6

您要返回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它会总是0

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; 
} 

正如其他人所说,Integer类型的List是不一样的东西int类型的数组。

0

也许这不会是最好的选择,但也适用,altough你总是得到整数零名单彼得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); 
} 
3

你可以有,实际上产生的随机整数简单的代码代替零的通过直接使用Random类:

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

这可以返回任何Integer值;你可以指定一个带有附加参数的范围ints() method.

0

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

相关问题