2016-10-20 12 views
-2

私は、2つの配列を作成し、10個の乱数を1つの配列に挿入した後、copyArrayを使って最初の配列から2番目の配列に情報をコピーし、それを表示します。JavaはInt Arrayを返さない

`class C9e5 
{ 
    public static void main(String[] args) 
    { 
     int[] a = new int[10]; 
     int[] b = new int[10]; 
     Random r = new Random(); 
     for(int i = 0; i < a.length; i++) 
     { 
      a[i] = r.nextInt(); 
     } 
     copyArray(a, b); 
     System.out.println("Array a contains " + a); 
     System.out.println("Array b contains " + b); 
    } 
    public static int copyArray(int[] c, int[] d) 
    { 
     c = d; 
     return c; 
     return d; 
    } 
}` 

エラーメッセージは、「互換性のない型を:INT [] intに変換することはできません」言い続けポップアップ は私が間違って何をやっている、と私はそれをどのように修正するのですか?

そう

わかりました、今それが働いている(あなたにみんなに感謝!)、しかし、ときに私はそれをコンパイルして実行し、代わりに私は、ランダムなシンボルを得ている乱数を取得します。助けてください!

+2

のようにそれを使うのか?メソッドのシグネチャで戻り値の型をint []に変更します。 –

答えて

1

copyArrayメソッドが無効です。コード内でint配列を返そうとしていますが、メソッドのシグネチャはそれが正規のintを返すことを宣言します。また、2番目のリターンはデッドコードです...決して実行することはできません。

+0

ありがとうございます! :) –

2

アレイコピーを有効にするには、cからdへの値を実際にコピーする必要があります(発信者の参照を更新できないため)。

public static void copyArray(int[] c, int[] d) { 
    for (int i = 0; i < c.length; i++) { 
     d[i] = c[i]; 
    } 
} 

または

public static int[] copyArray(int[] c) { 
    return Arrays.copyOf(c, c.length); 
} 

のようなものと、あなたはCとDを戻ってきているのはなぜ

public static void main(String[] args) { 
    int[] a = new int[10]; 
    Random r = new Random(); 
    for (int i = 0; i < a.length; i++) { 
     a[i] = r.nextInt(); 
    } 
    int[] b = copyArray(a); 
    // Arrays don't override toString... 
    System.out.println("Array a contains " + Arrays.toString(a)); 
    System.out.println("Array b contains " + Arrays.toString(b)); 
} 
+0

ありがとうございます! :) –

+0

forループを使用した最初のコピー方法に注意してください。 「d」が正しい長さであることをチェックしていません。それは例外をスローしたり、奇妙な結果をもたらす可能性があります。 –

関連する問題