2010-02-20 7 views
12

मुझे नहीं पता कि डबल्स की सरंक्ड सूची को सरणी में कैसे परिवर्तित किया जाए। कृपया मुझे त्रुटि खोजने में मदद करें। जब तुम प्रकार double (आदिम प्रकार) की एक सरणी वापस जाने के लिए कोशिश कर रहे हैं`toArray()` का उपयोग करके लिंक्डलिस्ट में सरणी को कैसे परिवर्तित करें?

import java.util.*; 
public class StackCalculator { 


    private LinkedList<Double> values; 
    double value1 , value2 ; 

    public StackCalculator() 
    { 
    values = new LinkedList<Double>(); 
    } 


    void push(double x) 
    { 
     values.addFirst(x); 
    } 
    double pop() 
    { 
     return values.removeFirst(); 
    } 
    double add() 
    { 
     value1=pop(); 
     value2=pop(); 
     return (value1 + value2); 
    } 

    double mult() 
    { 
     value1=pop(); 
     value2=pop(); 
     return (value1 * value2); 
    } 


    double[] v = new double[10]; 
    double[] getValues() 
    { 
     return values.toArray(v); 
    } 

} 
+0

धन्यवाद .कि मुझे मदद की समस्या – kathy

उत्तर

4

समस्या, अपनी सूची है, जो Double (वस्तु) है का प्रकार है। यदि आप Double[] वापस करने के लिए getValues() बदलते हैं तो आपका कोड संकलित होना चाहिए।

आपकी अन्य विधियों के लिए, यह कोई समस्या नहीं है, क्योंकि जावा स्वचालित रूप से Double से double एस और वापस (ऑटोबॉक्सिंग कहा जाता है) को परिवर्तित करता है। यह सरणी प्रकारों के लिए ऐसा नहीं कर सकता है।

1

toArray को T[] वापस करने के लिए परिभाषित किया गया है जहां टी एक सामान्य तर्क है (वैसे भी एक तर्क संस्करण है)। चूंकि प्राइमेटिव्स को सामान्य तर्क के रूप में उपयोग नहीं किया जा सकता है, इसलिए एरे double[] वापस नहीं कर सकता है।

24

List#toArray()List<Double>Double[] देता है। Double[]double[] जैसा नहीं है। चूंकि सरणी वस्तुएं हैं, प्राइमेटिव नहीं, autoboxing नियम यहां लागू नहीं होते हैं और लागू नहीं कर सकते हैं।

या तो Double[] बजाय का उपयोग करें:

Double[] array = list.toArray(new Double[list.size()]); 

... या एक सरल for पाश का उपयोग कर double[] खुद के बनाने के लिए:

double[] array = new double[list.size()]; 
for (int i = 0; i < list.size(); i++) { 
    array[i] = list.get(i); // Watch out for NullPointerExceptions! 
} 
+0

आप .कि मदद की धन्यवाद हल मुझे लूप के लिए समस्या – kathy

+4

ओउ, ओ (एन^2) हल करें? क्यों नहीं int int = 0; के लिए (डबल वी: सूची) सरणी [i ++] = v; ' – naiad

+0

हाँ दूसरा विकल्प बहुत भयानक है। स्पार्कलेशी का सुझाव बहुत बेहतर होगा। – sage88

संबंधित मुद्दे

 संबंधित मुद्दे