जावा में एक बूलियन सरणी को आरंभीकृत करना


102

मेरे पास यह कोड है

public static Boolean freq[] = new Boolean[Global.iParameter[2]];
freq[Global.iParameter[2]] = false;

कोई मुझे बता सकता है कि मैं यहाँ क्या गलत कर रहा हूँ और मैं इसे कैसे सही करूँगा? मुझे बस बूलियन झूठे सभी सरणी तत्वों को इनिशियलाइज़ करने की आवश्यकता है। धन्यवाद

जवाबों:


285

मुझे बस बूलियन झूठे सभी सरणी तत्वों को इनिशियलाइज़ करने की आवश्यकता है।

boolean[]इसके बजाय या तो उपयोग करें ताकि सभी मानों में चूक हो जाए false:

boolean[] array = new boolean[size];

याArrays#fill() पूरे सरणी को भरने के लिए उपयोग करें Boolean.FALSE:

Boolean[] array = new Boolean[size];
Arrays.fill(array, Boolean.FALSE);

यह भी ध्यान दें कि सरणी सूचकांक शून्य आधारित है। freq[Global.iParameter[2]] = false;आपके द्वारा की गई लाइन का कारण होगा ArrayIndexOutOfBoundsException। जावा में सरणियों के बारे में अधिक जानने के लिए, इस मूल ओरेकल ट्यूटोरियल से परामर्श करें


3
कोड का दूसरा टुकड़ा उस स्थिति के लिए फायदेमंद होता है जब हम इसे सभी सच्चे मूल्यों पर शुरू करना चाहते हैं (इसे सेट करें)। बहुत बढ़िया जवाब!
despot

3
मैं इसके बजाय परिवर्तनशील नाम का विलोम करता हूँ और झूठे मूल्यों के साथ डिफ़ॉल्ट आरंभीकरण का उपयोग करता हूँ।
बालूसी

मैं वास्तव में के पक्ष में हूँ Boolean[] arrayके रूप में यह आप प्रत्येक तत्व के लिए तीन राज्यों की अनुमति देता है: true, falseऔर null, जो ऐसे मामलों में जहां आपको लगता है कि कुछ है "संसाधित नहीं" नोट करने के लिए चाहते हैं के लिए उपयोगी है।
अभिषेक दिवेकर

20

जब आप इसे आवंटित करते हैं, तो सरणी को झूठे के लिए आरंभीकृत किया जाएगा।

जावा में सभी सरणियों को प्रकार के लिए डिफ़ॉल्ट मान से आरंभ किया जाता है। इसका मतलब है कि चींटियों के सरणियों को 0 से शुरू किया जाता है, बूलियन के सरणियों को झूठे के लिए आरोपित किया जाता है और संदर्भ प्रकारों के सरणियों को शून्य से आरंभ किया जाता है।


12
वह उपयोग कर रहा है Boolean, नहीं boolean, इसलिए यह डिफ़ॉल्ट होगा null
बालुसक

1
सही बात। मैंने वो नहीं देखा। Arrays.fill चाल करना चाहिए।
जोर्जेन फॉग

9

जावा में एरर्स 0. पर अनुक्रमित करना शुरू कर देता है। इसलिए आपके उदाहरण में आप एक ऐसे तत्व का जिक्र कर रहे हैं जो एक से एक सरणी के बाहर है।

यह शायद freq [Global.iParameter [2] -1] = false जैसा कुछ होना चाहिए;

आपको इसे सभी को इनिशियलाइज़ करने के लिए एरे के माध्यम से लूप करना होगा, यह लाइन केवल अंतिम एलिमेंट को इनिशियलाइज़ करती है।

वास्तव में, मुझे पूरा यकीन है कि जावा में बूलियंस के लिए गलत डिफ़ॉल्ट है, इसलिए आपको शुरू में शुरू करने की आवश्यकता नहीं हो सकती है।

सादर


2
वह उपयोग कर रहा है Boolean, नहीं boolean, इसलिए यह डिफ़ॉल्ट होगा null
बालुसक

5

उन्हें falseडिफ़ॉल्ट रूप से प्रारंभ किया जाएगा । जावा सरणियों में ढेर पर बनाया जाता है और सरणी के प्रत्येक तत्व को उसके प्रकार के आधार पर एक डिफ़ॉल्ट मान दिया जाता है। के लिए booleanडेटा टाइप डिफ़ॉल्ट मान है false


3
वह उपयोग कर रहा है Boolean, नहीं boolean, इसलिए यह डिफ़ॉल्ट होगा null
बालुस

मैं बूलियन, मेरे बुरे का उपयोग करने का मतलब ... गुमराह के लिए खेद है
leba-lev

2

सार्वजनिक स्थैतिक बूलियन freq [] = नया बूलियन [Global.iParameter [2]];

Global.iParameter [2]:

यह कांस्टेबल मूल्य होना चाहिए


1
यह सच नहीं है। चर भी हो सकता है। समस्या यह है कि आप सरणी का उपयोग करने के लिए Global.iParameter [2] का उपयोग कर रहे हैं। लेकिन सूचकांक केवल Global.iParameter [0] -1 तक 0 से जा रहे हैं !!
करुसैल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.