2012-10-04 39 views
5

我想将我的int数组的内容复制到double类型的数组中。我必须首先演员吗?在Java中将int数组的内容复制到双精度数组中?

我成功地将一个int类型的数组复制到另一个int类型的数组中。 但是现在我想编写代码将数组中的内容复制到数组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

您可以通过源中的每个元素进行迭代,并将它们添加到目标数组。你不需要从intdouble的明确演员,因为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

System.arraycopy JavaDoc

[...]否则,如果以下任一为真,一个ArrayStoreException信息被抛出并且目的地未被修改:

* ...

* ...

* src参数和dest参数指阵列,其部件类型是不同原始类型。 [...]

由于intdouble是不同的原始类型你将不得不通过一个阵列手动迭代,其内容复制到另一个。

12

System.arraycopy()无法复制int[]double[]

有关使用谷歌番石榴如何:

int[] a = {23,31,11,9}; 

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

值得一提的是,在这个时代,爪哇8提供了一个优雅的一行做到不需要使用第三方库:

int[] ints = {23, 31, 11, 9}; 
double[] doubles = Arrays.stream(ints).asDoubleStream().toArray(); 
相关问题