2012-06-06 14 views
5

मैं जावा में एक पूर्णांक सरणी कैसे प्रारंभ कर सकता हूं जैसे: int[] array = {1,2,3}; स्विच कथन के अंदर?जावा: स्विच केस में int सरणी कैसे प्रारंभ करें?

वर्तमान में, मैं लिख सकते हैं:

switch(something) { 
    case 0: int[] array = {1,2,3}; break; 
    default: int[] array = {3,2,1}; 
} 

लेकिन जब मैं array चर तक पहुँचने का प्रयास, ग्रहण शिकायत है कि यह आरंभ नहीं किया जा सकता है।

यदि मैं इसे int[] array; या int[] array = new int[3]; की घोषणा करने का प्रयास करता हूं और उसके बाद स्विच स्टेटमेंट होता है, तो यह कहता है कि मैं इसे फिर से चलाने की कोशिश कर रहा हूं।

मैं इस समस्या को कैसे हल कर सकता हूं? अंतिम विचार कुछ तर्क (एक स्विच स्टेटमेंट) के आधार पर कोड की केवल एक पंक्ति में 10 मानों के साथ एक सरणी को प्रारंभ करने में सक्षम होना है।

+0

यह भी देखें: http://stackoverflow.com/questions/4104134/why-are-variables-not-local-in-case-statements –

उत्तर

14

स्विच स्टेटमेंट से पहले घोषणा को रखने के लिए आपको इसे नियमित रूप से प्रारंभ करने की आवश्यकता है। आपको सही प्रकार की सरणी को स्पष्ट रूप से तुरंत चालू करने की आवश्यकता होगी।

int[] array; 
switch (something) { 
    case 0: array = new int[] {1, 2, 3}; break; 
    default: array = new int[] {3, 2, 1}; 
} 
+0

धन्यवाद! क्षमा करें अगर यह एक बेवकूफ सवाल लग रहा था :) –

1

मैं आपको स्विच ब्लॉक के बाहर सरणी घोषणा देने के लिए कहूंगा, हालांकि, आप घोषणा के बाद = { 1, 2, 3} वाक्यविन्यास का उपयोग नहीं कर सकते हैं। array = new int[] {1, 2, 3};

1
int[] array; 
switch (something) { 
    case 0: array = new int[]{1, 2, 3}; break; 
    default: array = new int[]{3, 2, 1}; 
} 
+0

हाँ, धन्यवाद, लेकिन मार्क बेयर्स पहले थे :) –

+0

एक मिनट से भी कम समय तक मारो! ठीक है। खुशी है कि आपको एक समाधान मिला! – GWilliams00

0

मैंने पहले ही प्रश्न था। उम्मीद है कि यह आपकी मदद करता है।

प्रथम मार्क खरीदारों बिल्कुल सही है। जावा न्यूनतम संभव दायरे के साथ काम करता है। इसलिए यदि आप

case 1: int arr = whatever and case 2 : int arr = ... यह आपको पुन: घोषणा की त्रुटि देगा क्योंकि पूरे स्विच को एक ही दायरे के रूप में माना जाता है और कोई केस वार/आधारित स्कोप नहीं है।

प्वाइंट 2: यदि आप कहते हैं:

case 1: int arr = whatever and case 2 : arr = ... यह सोचते हैं कि पूर्णांक आगमन सिद्धांत के आधार पर संकलित जाएगा और फिर मामले 1 से लिया आप अभी भी गलत हैं और फिर आप त्रुटि दे देंगे जावा, कि each and every local var has to be declared and initialized before its use.

तो सबसे अच्छा तरीका यह है कि आप इसे अपने स्विच के बाहर घोषित करें और जिस भी मामले में आप इसे पसंद करते हैं उसे परिभाषित या प्रारंभ करें।

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