2011-02-01 28 views
25

मुझे निम्न पंक्तियों में कोई समस्या है जहां car एक String सरणी है जिसे प्रारंभ नहीं किया गया है/इसमें कोई तत्व नहीं है।स्ट्रिंग सरणी की लंबाई कैसे प्राप्त करें?

String car []; 
System.out.println(car.length); 

संभावित समाधान क्या है?

+0

समाधान शायद आपकी समस्या पर निर्भर करता है। हमें यह बताने की देखभाल है कि यह क्या है? सुझावों के सुझाव के लिए – jarnbjo

उत्तर

49

चूंकि car प्रारंभ नहीं किया गया है, इसकी लंबाई नहीं है, इसका मूल्य null है। हालांकि, संकलक आपको के रूप में के रूप में संकलित करने की अनुमति भी नहीं देगा, निम्न त्रुटि को फेंकने: परिवर्तनीय कार को प्रारंभ नहीं किया जा सकता है।

आप पहली बार यह प्रारंभ करने की आवश्यकता है, और फिर आप .length उपयोग कर सकते हैं:

String car[] = new String[] { "BMW", "Bentley" }; 
System.out.println(car.length); 

आप एक खाली सरणी प्रारंभ करने की आवश्यकता है, तो आप निम्न का उपयोग कर सकते हैं:

String car[] = new String[] { }; // or simply String car[] = { }; 
System.out.println(car.length); 

आप की जरूरत है कुछ पदों को भरने के लिए इसे एक विशिष्ट आकार के साथ शुरू करने के लिए, आप निम्न का उपयोग कर सकते हैं:

String car[] = new String[3]; // initialize a String[] with length 3 
System.out.println(car.length); // 3 
car[0] = "BMW"; 
System.out.println(car.length); // 3 

हालांकि, मैं सलाह देते हैं कि आप एक List बजाय का उपयोग करें, यदि आप इसे करने के लिए तत्वों को जोड़ने का इरादा:

List<String> cars = new ArrayList<String>(); 
System.out.println(cars.size()); // 0 
cars.add("BMW"); 
System.out.println(cars.size()); // 1 
+1

+1, जो लगभग हमेशा एक अधिक उपयुक्त * इंटरफ़ेस * सरणी से काम करने के लिए होते हैं। –

+2

आपका पहला कथन "चूंकि कार शुरू नहीं हुई है, इसकी कोई लंबाई नहीं है, इसका मूल्य शून्य है" गलत है। चूंकि कार शुरू नहीं हुई है, इसलिए कोड संकलित नहीं होगा। एक संभावित अनियमित चर का संदर्भ एक संकलन समय त्रुटि है। – jarnbjo

+0

आप सही हैं, 'जावैक' वास्तव में उस त्रुटि को फेंकता है। मैंने इसके जवाब को मेरे खाते में संपादित कर दिया है। –

4

वैसे, इस मामले में car चर null, तो यह अपसंदर्भन (के रूप में आप कर हो जाएगा जब आप car.length तक पहुंचते हैं) NullPointerException फेंक देंगे।

वास्तव में, आप उस चर पर सभी पर तब तक नहीं पहुंच सकते जब तक कि कुछ मूल्य निश्चित रूप से असाइन नहीं किए जाते - अन्यथा संकलक शिकायत करेगा कि "परिवर्तनीय कार प्रारंभ नहीं हो सकती है"।

आप यहां क्या करने की कोशिश कर रहे हैं (यह मुझे बिल्कुल स्पष्ट नहीं है कि आप "समाधान" क्या खोज रहे हैं)?

+0

अच्छी तरह से यह गतिशील वेब प्रोजेक्ट के हिस्से के रूप में आता है, जहां मुझे यकीन नहीं है कि सरणी में कोई भी मूल्य संग्रहीत किया जाएगा या नहीं !! और फिर मैं यह जांचना चाहता हूं कि मेरे सरणी में कुछ भी है या नहीं ... –

2
String car []; 

स्ट्रिंग-एस की एक श्रृंखला का संदर्भ है। आप लंबाई नहीं देख सकते क्योंकि वहां कोई सरणी नहीं है!

0

मुझे लगता है कि आप इस

String[] car = new String[10]; 
int size = car.length; 
+0

wazzy: wat अगर सरणी का आकार हाथ से पहले ज्ञात नहीं है? –

+1

फिर एक सरणी आपकी सबसे अच्छी पसंद नहीं हो सकती है। @ जओओ की सिफारिश की गई सूची को देखें। –

2

यह काम नहीं करेगा के लिए देख रहे हैं। आपको पहले सरणी को प्रारंभ करना होगा। अब तक, आपके पास केवल एक स्ट्रिंग [] संदर्भ है, जो null पर इंगित करता है।

जब आप लंबाई सदस्य को पढ़ने का प्रयास करते हैं, तो आप वास्तव में क्या करते हैं null.length, जिसके परिणामस्वरूप NullPointerException होता है।

1

चूंकि आपने car को प्रारंभ नहीं किया है, इसलिए इसका JVM (जावा वर्चुअल मशीन) में कोई अस्तित्व नहीं है, इसलिए आपको इसे पहले प्रारंभ करना होगा।

उदाहरण के लिए:

car = new String{"Porsche","Lamborghini"}; 

अब आप अपने कोड ठीक चलेगा।

इनपुट:

String car []; 
car = new String{"Porsche","Lamborghini"}; 
System.out.println(car.length); 

उत्पादन:

1

सब से ऊपर जवाब का सुझाव दिया है कि यह एक NullPointerException फेंक करेंगे।

कृपया इसे कुछ मान (ओं) के साथ शुरू करें और फिर आप लंबाई की संपत्ति का सही ढंग से उपयोग कर सकते हैं। उदाहरण के लिए:

String[] str = { "plastic", "paper", "use", "throw" }; 
System.out.println("Length is:::" + str.length); 

सरणी 'str' अब परिभाषित किया गया है, और इसलिए इसकी लंबाई भी परिभाषित मान है।

0

जावा में, हम

String []car; 
String car[]; 

हम नए ऑपरेटर का उपयोग सारिणी निर्मित के रूप में और उसके प्रकार को निर्दिष्ट करके सरणियों (। उदाहरण के लिए कार) के एक स्ट्रिंग की घोषणा: -

String []car=new String[]; 
String car[]=new String[]; 

यह एक प्रदान करती है संदर्भ, कार के लिए स्ट्रिंग्स की एक सरणी के लिए। आप भी इसे आरंभ करने से सरणी बना सकते हैं: -

String []car={"Sedan","SUV","Hatchback","Convertible"}; 

जब से तुम एक सरणी आरंभ नहीं किया है और आप इसे उपयोग करने की कोशिश कर रहे हैं, एक NullPointerException फेंक दिया है।

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