2012-02-01 13 views
6

में डबल सरणी के लिए स्ट्रिंग सरणी परिवर्तित करने के लिए मैं एक स्ट्रिंग सरणी के रूप में है:कैसे एक पंक्ति

String[] guaranteedOutput = Arrays.copyOf(values, values.length, 
String[].class); 

सभी स्ट्रिंग मान नंबर दिए गए हैं। डेटा को Double[] में परिवर्तित किया जाना चाहिए।

प्रश्न
वहाँ जावा में एक एक पंक्ति समाधान इस लक्ष्य को हासिल करने के लिए या हम पाश की जरूरत है और एक डबल करने के लिए प्रत्येक मान परिवर्तित है?

+1

आपको लूप की आवश्यकता होगी। – Jivings

+0

क्यों नहीं 'डबल [] '? यह तेज है। –

+0

लूप और उनमें से प्रत्येक को परिवर्तित करें, आप क्या कर सकते हैं। – asgs

उत्तर

6

लूप का उपयोग करके इसे लागू करने के लिए एक विधि बनाएं, फिर अपनी विधि को कॉल करें, और आपके पास एक-लाइन समाधान होगा।

ऐसा करने के लिए जावा एपीआई में कोई भी बिट-इन विधि नहीं है।

0

मुझे लगता है कि आपको प्रत्येक मान को लूप करना होगा और प्रत्येक मान को डबल में बदलना होगा। इस तरह मैंने इसे अपने अन्य प्रश्नों में से एक में किया:

for(getData : getDataArray){ 
double getTotal; 
getTotal = getTotal + Double.parseDouble(getData); 
} 
return getTotal; 

विचार समान है। इसे एक विधि में बदलें, अपने पैरामीटर पास करें और आप सुनहरे हो।

+0

सिवाय इसके कि आप अपने लूप में एक प्रकार खो रहे हैं; और यदि वह एक सरणी प्राप्त करना चाहता है (जैसा कि वह उस सूची के विपरीत है जिसे वह जोड़ सकता है), तो आपको वास्तव में पूर्णांक अनुक्रमणिका जानने की आवश्यकता होगी। –

+0

मैंने यह स्पष्ट नहीं किया कि मैंने जो कोड प्रदान किया है वह एक बीन्सहेल स्क्रिप्ट से एक स्निप है जिसे मैंने काम किया, इसलिए डेटा प्रकार की कमी। – Carlos

0

लूप के साथ क्या गलत है?

double[] parsed = new double[values.length]; 
for (int i = 0; i<values.length; i++) parsed[i] = Double.valueOf(values[i]); 

विशेष रूप से बेकार नहीं है। इसके अलावा, आप आसानी से उचित त्रुटि हैंडलिंग जोड़ सकते हैं।

बेशक आप इसे आसानी से लपेट सकते हैं।

OpenJDK8 शायद लैम्ब्डा भाव लाना होगा, और Double.valueOf के रूप में "मानचित्र" समारोह का उपयोग कर इस का उपयोग कर के लिए एक प्रमुख उदाहरण होगा।

1
CollectionUtils.collect(guaranteedOutput, new Transformer() { 
     public Object transform(Object i) { 
      return Double.parseDouble(i); 
     } 
}); 

संपादित

ध्यान रखें कि इस JavaSDK में नहीं है! मैं उपयोग कर रहा हूँ http://commons.apache.org/collections/apidocs/org/apache/commons/collections/CollectionUtils.html

+1

आप अर्धविराम गायब थे और प्रारूपण ने इसे पढ़ना मुश्किल बना दिया; तय है कि। यह ध्यान देने योग्य भी है कि यह मूल जावा का हिस्सा नहीं है बल्कि 'org.apache.commons.collections' का हिस्सा है - यह कहा जा रहा है कि उत्कृष्ट उत्तर। (मैं आपको +1 करूंगा लेकिन मैं दिन के लिए वोट से बाहर हूं) –

+0

लॉल! संपादन के लिए धन्यवाद! मैं इस उद्देश्य के लिए कॉमन्स संग्रह की तरह! –

1

आप कार्यात्मक प्रोग्रामिंग, जो दुर्भाग्य से जावा प्रदान नहीं करता है से एक नक्शे के आपरेशन चाहते हैं। इसके बजाय, आप

double[] nums = new double[guaranteedOutput.length]; 
for (int i = 0; i < nums.length; i++) { 
    nums[i] = Double.parseDouble(guaranteedOutput[i]); 
} 
5

के रूप में पाश के लिए है एक पंक्ति में: पी

Double[] d=new ArrayList<Double>() {{for (String tempLongString : tempLongStrings) add(new Double(tempLongString));}}.toArray(new Double[tempLongStrings.length]); 
19

जावा 8 Stream API यह करने के लिए अनुमति देता है:

double[] doubleValues = Arrays.stream(guaranteedOutput) 
         .mapToDouble(Double::parseDouble) 
         .toArray(); 

डबल पेट के एक विधि संदर्भ के रूप में प्रयोग किया जाता है। Read more here

कोड का उपयोग करने के लिए import java.util.Arrays;

युपीडी मत भूलना से पहले: आप अपने सरणी कास्ट करने के लिए डबल चाहते हैं [], नहीं दोगुना [], आप निम्न कोड का उपयोग कर सकते हैं:

Double[] doubleValues = Arrays.stream(guaranteedOutput) 
         .map(Double::valueOf) 
         .toArray(Double[]::new); 
संबंधित मुद्दे