2012-10-04 56 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(); 
相關問題