2011-06-30 6 views
11

次のコードを実行すると何もコピーされません - 何が間違っていますか?あるアレイから別のアレイにコピーする最良の方法

また、あるアレイから別のアレイにデータをコピーするのに最適な方法ですか?

public class A { 
    public static void main(String args[]) { 
     int a[] = { 1, 2, 3, 4, 5, 6 }; 
     int b[] = new int[a.length]; 

     for (int i = 0; i < a.length; i++) { 
      a[i] = b[i]; 
     } 
    } 
} 
+5

あなたはそれをやっていませんか? – zellio

+0

どのような問題がありますか?あなたのコードはうまく見えます(System.arraycopy()を探していますか?) – rsp

+1

@Mimi、@rsp - コードにバグがあります! –

答えて

18

私はあなたの割り当てが逆方向にあると思う:

a[i] = b[i];

は次のようになります。

b[i] = a[i];

71

ソリューションの多くがあります。

b = Arrays.copyOf(a, a.length); 

新しい配列を割り当て、aの要素をコピーして新しい配列を返します。どのコピーあなた自身を割り当て先の配列にソース配列の内容を

それとも

b = new int[a.length]; 
System.arraycopy(a, 0, b, 0, b.length); 

または非常に多くのArrays.copyOf()のように動作します

b = a.clone(); 

this threadを参照してください。

またはループ内の割り当ての方向を逆にすると、投稿したものです。

関連する問題