2012-10-04 14 views
5

मैं अपने int सरणी की सामग्री को दो प्रकार की सरणी में कॉपी करने की कोशिश कर रहा हूं। क्या मुझे उन्हें पहले डालना है?जावा में एक डबल सरणी के लिए एक int सरणी की सामग्री कॉपी करें?

मैंने सफलतापूर्वक प्रकार int की एक सरणी को अन्य प्रकार की int में कॉपी किया। हालांकि अब मैं कोड लिखना चाहता हूं जो ऐरे A से ऐरे Y (int से डबल) तक सामग्री कॉपी करेगा।

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

आप स्रोत के प्रत्येक तत्व के माध्यम से पुनरावृति और उन्हें गंतव्य सरणी के लिए जोड़ सकते हैं:

यहाँ मेरी कोड है। आपको int से double पर जाने वाली एक स्पष्ट कलाकार की आवश्यकता नहीं है क्योंकि 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

@ शर्दी: आपका स्वागत है। –

6

से System.arraycopy JavaDoc

[...] अन्यथा, यदि निम्नलिखित कुछ भी सही है, एक ArrayStoreException फेंक दिया गया है और गंतव्य संशोधित नहीं है:

* ...

* ...

* src तर्क और गंतव्य तर्क सरणियों जिसका घटक प्रकार विभिन्न आदिम प्रकार हैं देखें। [...]

के बाद से int और double विभिन्न आदिम प्रकार आप मैन्युअल रूप से एक सरणी के माध्यम से पुनरावृति और एक दूसरे के लिए अपनी सामग्री की प्रतिलिपि करना होगा रहे हैं।

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(); 
संबंधित मुद्दे