2010-04-04 22 views
22

मेरे पास जावा सरणी पहले से परिभाषित हैजावा सरणी असाइनमेंट (एकाधिक मान)

float[] values = new float[3]; 

मैं कोड में आगे पर कुछ इस तरह करना चाहते हैं:

values = {0.1f, 0.2f, 0.3f}; 

लेकिन वह मुझे एक संकलन त्रुटि देता है। क्या ऐसा करने के बजाए एक बार में कई मानों को परिभाषित करने का एक अच्छा तरीका है ?:

values[0] = 0.1f; 
values[1] = 0.2f; 
values[2] = 0.3f; 

धन्यवाद!

उत्तर

55

हाँ:

float[] values = {0.1f, 0.2f, 0.3f}; 

इस वाक्य रचना एक प्रारंभकर्ता में केवल की अनुमति है। आप एक काम है, जहां निम्नलिखित सबसे अच्छा है में इसका इस्तेमाल नहीं कर सकते हैं कर सकते हैं:

values = new float[3]; 

या

values = new float[] {0.1f, 0.2f, 0.3f}; 

इस के लिए भाषा का कल्पना में एक संदर्भ को खोजने के लिए कोशिश कर रहा है, लेकिन यह के रूप में के रूप में पढ़ने योग्य नहीं है कभी। किसी और को एक मिलता है?

+0

आवंटित मुझे लगता है कि यह यह हो सकता है, 10.6 सरणी initializers, http: // जावा .sun.com/दस्तावेज़/पुस्तकें/jls/third_edition/html/arrays.html # 11358 – Adrian

+2

यह व्याकरण का प्रासंगिक हिस्सा प्रतीत होता है: http://java.sun.com/docs/books/jls/third_edition/ एचटीएमएल/arrays.html # 11358 - व्यक्तिगत रूप से, मुझे हमेशा इसी तरह के दस्तावेज़ों की तुलना में जावा भाषा का नमूना बहुत पठनीय पाया जाता है। –

+8

आप यह ध्यान रखना चाहते हैं कि नीचे कोड एक नई सरणी बनाता है। –

8

घोषणा पर आप निम्न कार्य कर सकते हैं।

float[] values = {0.1f, 0.2f, 0.3f}; 

जब फ़ील्ड पहले से परिभाषित है, तो इसे आजमाएं।

values = new float[] {0.1f, 0.2f, 0.3f}; 

ध्यान रखें कि दूसरा संस्करण भी एक नई सरणी बनाता है। यदि values पहले से मौजूद किसी मौजूदा फ़ील्ड का एकमात्र संदर्भ था, तो यह कचरा संग्रहण के लिए योग्य बन जाता है।

1

आप संकलन समय पर मूल्यों को जानते हैं आप कर सकते हैं:

float[] values = {0.1f, 0.2f, 0.3f}; 

कि अगर मान क्रम में चर रहे हैं करने के लिए कोई तरीका नहीं है।

3

जावा एक ऐसा निर्माण प्रदान नहीं करता है जो मौजूदा सरणी के तत्वों के लिए कई मानों के असाइन करेगा। शुरुआती सिंटैक्स का उपयोग केवल एक नई सरणी वस्तु बनाते समय किया जा सकता है। यह घोषणा के बिंदु पर हो सकता है, या बाद में। लेकिन किसी भी तरह से, प्रारंभकर्ता एक नई सरणी वस्तु शुरू कर रहा है, मौजूदा को अद्यतन नहीं कर रहा है।

0

यह काम करना चाहिए, लेकिन धीमी है और गलत लगता है: देने की

float[] values = new float[3]; 
    float[] v = {0.1f, 0.2f, 0.3f}; 
    float[] values = v; 
0

आप की तरह एक स्थानीय चर का उपयोग कर सकते हैं, एक विशिष्ट सरणी के लिए मूल्य। चूंकि मैंने देखा है कि नमूना 0.1 - 0.3 था, आप इसे इस तरह से कर सकते हैं। यदि आप चार्ट और आलेख डिजाइन कर रहे हैं तो यह विधि बहुत उपयोगी है। आप एक्स-वैल्यू 0.1 से एनएचटी तक बढ़ा सकते हैं।

या आप किसी प्रकार के कुछ ग्रिड को डिज़ाइन करना चाहते हैं।

0
public class arrayFloats { 
     public static void main (String [] args){ 
     float [] Values = new float[3]; 
     float Incre = 0.1f; 
     int Count = 0; 

     for (Count = 0;Count<3 ;Count++) { 
      Values [Count] = Incre + 0.0f; 
      Incre += 0.1f; 
      System.out.println("Values [" + Count + "] : " + Values [Count]); 
     } 


     } 
    } 

//OUTPUT: 
//Values [0] : 0.1 
//Values [1] : 0.2 
//Values [2] : 0.3 

यह नहीं है सब और हो सब: ​​System.arraycopy(new float[]{...}, 0, values, 0, 3);

+0

एक वर्णनात्मक पाठ जोड़ना दूसरों को आपके उत्तर को समझने में मदद कर सकता है –

-1
int a[] = { 2, 6, 8, 5, 4, 3 }; 
int b[] = { 2, 3, 4, 7 }; 

अगर आप नाव नंबर ले तो आप नाव लेने के लिए और यह तुम्हारी पसंद

इस सरणी तत्व को दिखाने के लिए बहुत अच्छा तरीका है।

0

उदाहरण के लिए मैं पात्रों के लिए सब से ऊपर की कोशिश की यह में विफल रहता है, लेकिन है कि मुझे >> के लिए काम किया आरक्षित एक सूचक तो मानों

char A[]; 
A = new char[]{'a', 'b', 'a', 'c', 'd', 'd', 'e', 'f', 'q', 'r'}; 
संबंधित मुद्दे