2012-10-04 7 views
5

私はint型配列の内容をdouble型の配列にコピーしようとしています。最初にキャストしなければならないのですか?int配列の内容をJavaのdouble配列にコピーしますか?

int型の配列をint型の別の配列に正常にコピーしました。 しかし今は、配列Aから配列Y(intをdoubleにする)に内容をコピーするコードを記述したいと思います。

public class CopyingArraysEtc { 

    public void copyArrayAtoB() { 
     double[] x = {10.1,33,21,9},y = null; 
     int[] a = {23,31,11,9}, b = new int[4], c; 

     System.arraycopy(a, 0, b, 0, a.length); 

     for (int i = 0; i < b.length; i++) 
     { 
      System.out.println(b[i]); 
     } 

    }   

    public static void main(String[] args) { 
     //copy contents of Array A to array B 
     new CopyingArraysEtc().copyArrayAtoB(); 
    } 
} 
+1

実行してみましたか?それは動作しますか?何かエラーが出ますか?質問が何であるか完全にはわからない。 –

答えて

8

あなたがソースの各要素を反復処理し、転送先配列に追加することができます

は、ここに私のコードです。 doubleがより広いので、intからdoubleへの明示的なキャストは必要ありません。

int[] ints = {1, 2, 3, 4}; 
double[] doubles = new double[ints.length]; 
for(int i=0; i<ints.length; i++) { 
    doubles[i] = ints[i]; 
} 

あなたが作ることができ、このようなユーティリティメソッド -

public static double[] copyFromIntArray(int[] source) { 
    double[] dest = new double[source.length]; 
    for(int i=0; i<source.length; i++) { 
     dest[i] = source[i]; 
    } 
    return dest; 
} 
+0

ブリリアント、そのことを説明する時間をとってくれてありがとう:)その正確に私が何をしていたのか。 – binary101

+0

@shardy:どうぞよろしくお願いいたします。 –

6

[...]そうでない場合、次のいずれかに該当する場合、でArrayStoreExceptionSystem.arraycopy JavaDocから宛先は変更されません。

* ...

* ...

*引数srcとdest引数には、そのコンポーネントタイプ異なるプリミティブ型ある配列を参照してください。 intdouble以来 [...]

手動で1つの配列を反復処理し、別の1にその内容をコピーする必要があります異なるプリミティブ型です。

12

System.arraycopy()どのようにGoogleのグアバの使用についてdouble[]

int[]をコピーすることはできません。

この日および年齢では、Javaの8はせずにこれを行うには、エレガントなワンライナーを提供することを言及する価値
int[] a = {23,31,11,9}; 

//copy int[] to double[] 
double[] y=Doubles.toArray(Ints.asList(a)); 
15

サードパーティのライブラリを使用する必要性:

int[] ints = {23, 31, 11, 9}; 
double[] doubles = Arrays.stream(ints).asDoubleStream().toArray(); 
関連する問題