2016-11-04 22 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; 
} 
他の人が言ったように

、タイプIntegerListはタイプintの配列と同じものではありません。

0

ピーターLawreyが言うように、あなたが常に整数のゼロリストを取得しますaltoughおそらくこれは、最良の選択だけでなく、作品ではないでしょう。

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クラス使用して:これは、任意Integer値を返すことができる

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

と、 ints() method.

0

エラーは、配列とリストが互換性がないことを示しています。クイック検索では、Arrays.asList()のように別のものに変換する方法が示されていました。 第2に、Math.randomは0.0から0.9の間の乱数を返しますので、必要な数を乗算する必要があります。 Javaのクイックチュートリアルを最初に実行する必要があるかもしれません。 すべて最高です。

関連する問題