जावा में एरे को इनिशियलाइज़ कैसे करें?


434

मैं इस तरह एक सरणी को इनिशियलाइज़ कर रहा हूँ:

public class Array {

    int data[] = new int[10]; 
    /** Creates a new instance of Array */
    public Array() {
        data[10] = {10,20,30,40,50,60,71,80,90,91};
    }     
}

NetBeans इस लाइन पर एक त्रुटि की ओर इशारा करता है:

data[10] = {10,20,30,40,50,60,71,80,90,91};

मैं समस्या को कैसे हल कर सकता हूँ!


3
आप उस "int data [] = new int [10]" को "int data []" से बदल सकते हैं। तुम वहां स्मृति को बर्बाद कर रहे हो।
गुमशुदा

जवाबों:


642
data[10] = {10,20,30,40,50,60,71,80,90,91};

ऊपर सही (सिंटैक्स त्रुटि) नहीं है। इसका मतलब है कि आप एक ऐसा एरी असाइन कर रहे हैं, data[10]जो सिर्फ एक तत्व को पकड़ सकता है।

यदि आप किसी सरणी को इनिशियलाइज़ करना चाहते हैं, तो ऐरे इनिशियलाइज़र का उपयोग करके देखें :

int[] data = {10,20,30,40,50,60,71,80,90,91};

// or

int[] data;
data = new int[] {10,20,30,40,50,60,71,80,90,91};

दो घोषणाओं के बीच अंतर पर ध्यान दें। एक घोषित चर के लिए एक नया सरणी असाइन करते समय, newइसका उपयोग किया जाना चाहिए।

यहां तक ​​कि अगर आप वाक्यविन्यास को सही करते हैं, data[10]तो भी एक्सेस करना गलत है (आप केवल एक्सेस कर सकते data[0]हैं data[9]क्योंकि जावा में सरणियों का सूचकांक 0-आधारित है)। एक्सेस data[10]करना एक ArrayIndexOutOfBoundsException को फेंक देगा


2
दरअसल, प्राथमिक कारण यह गलत है कि यह एक सिंटैक्स त्रुटि है! AIOB तभी होगा जब वाक्यविन्यास स्वीकार्य होगा।
स्टीफन C

1
क्या आप मेरी मदद कर सकते हैं, अगर मैं इस तरह की एक सरणी घोषित करता हूं: public static void product(int[] array){ int[] productArray = new int[array.length];और productArray शून्य के सभी मूल्यों को सेट करना चाहता हूं, मुझे क्या लिखना चाहिए? (मुझे लगता है कि मुझे एक लूप लिखना चाहिए और सभी मानों को शून्य पर सेट करना चाहिए, क्या ऐसा करने का कोई बेहतर तरीका है?)
हेंगमेह

2
@Hengameh: यह डिफ़ॉल्ट रूप से 0 से आरंभिक है। देखें stackoverflow.com/a/2154340/1000655
नील Gokli

39

प्रयत्न data = new int[] {10,20,30,40,50,60,71,80,90,91 };


1
+1। आपके पास एक अतिरिक्त उद्घाटन ब्रेस है। एक भी लिख सकता है: डेटा [0] = 10; डेटा [1] = 20; .... int डेटा के बाद [] = new int [10], लेकिन यह बहुत अधिक कोड है और यह एक ही काम करना समाप्त कर देगा।
हमीश ग्रुबीजन

28

जब आप आकार 10 बनाते हैं तो इसे 10 स्लॉट आवंटित किए जाते हैं लेकिन 0 से 9. तक। यह लूप के लिए आपको यह देखने में मदद कर सकता है कि थोड़ा बेहतर है।

public class Array {
    int[] data = new int[10]; 
    /** Creates a new instance of an int Array */
    public Array() {
        for(int i = 0; i < data.length; i++) {
            data[i] = i*10;
        }
    }
}

16

तुम कर सकते हो:

int[] data = {10,20,30,40,50,60,71,80,90,91};

3
मैं सोच रहा हूँ कि 5 साल पहले स्वीकार किए गए उत्तर के शीर्ष पर यह क्या मूल्य जोड़ता है।
टायलरएच

12

वाक्य - विन्यास

 Datatype[] variable = new Datatype[] { value1,value2.... }

 Datatype variable[]  = new Datatype[] { value1,value2.... }

उदाहरण :

int [] points = new int[]{ 1,2,3,4 };

8

अन-ऑफिशियल वेबसाइट सीखने के बजाय ओरेकल वेबसाइट से सीखें

लिंक इस प्रकार है: यहां क्लिक करें

* आप प्रारंभिक विवरण के साथ-साथ पूर्ण विवरण के साथ घोषणा पा सकते हैं *

int n; // size of array here 10
int[] a = new int[n];
for (int i = 0; i < a.length; i++)
{
    a[i] = Integer.parseInt(s.nextLine()); // using Scanner class
}

इनपुट : 10 // सरणी आकार 10 20 30 40 50 60 71 80 90 91

डेटा प्रदर्शित करना:

for (int i = 0; i < a.length; i++) 
{
    System.out.println(a[i] + " ");
}

आउटपुट: 10 20 30 40 50 60 71 80 90 91


3

आप इस तरह एक सरणी को इनिशियलाइज़ नहीं कर सकते। दूसरों ने जो सुझाव दिया है, उसके अलावा आप यह कर सकते हैं:

data[0] = 10;
data[1] = 20;
...
data[9] = 91;

3

यदि आप किसी कंस्ट्रक्टर में किसी सरणी को इनिशियलाइज़ करना चाहते हैं, तो आप उन ऐरे इनिशियलाइज़र का उपयोग नहीं कर सकते।

data= {10,20,30,40,50,60,71,80,90,91};

बस इसे बदल दो

data = new int[] {10,20,30,40,50,60,71,80,90,91};

आपको आकार को निर्दिष्ट करने की आवश्यकता नहीं है, data[10] = new int[] { 10,...,91} बस संपत्ति / क्षेत्र की घोषणा करें int[] data;और इसे ऊपर की तरह प्रारंभ करें। आपके कोड का सही संस्करण निम्नलिखित की तरह दिखेगा:

public class Array {

    int[] data;

    public Array() {
        data = new int[] {10,20,30,40,50,60,71,80,90,91};
    }

}

जैसा कि आप देखते हैं कि ब्रैकेट खाली है। कोष्ठक के बीच के आकार को बताने की कोई आवश्यकता नहीं है, क्योंकि प्रारंभिक और इसका आकार घुंघराले कोष्ठक के बीच तत्वों की गिनती द्वारा निर्दिष्ट किया गया है।


2

आप सरणी के 10 वें तत्व को सरणी के प्रयास में सेट करने का प्रयास कर रहे हैं

data = new int[] {10,20,30,40,50,60,71,80,90,91};

FTFY


0

शायद यह काम करेगा:

public class Array {

    int data[] = new int[10]; 
    /* Creates a new instance of Array */
    public Array() {
        data= {10,20,30,40,50,60,71,80,90,91};
    }
}

6
यह सवाल कैसे अलग है? कृपया अपने उत्तर का विस्तार करें!
अलेक्जेंडर वोग्ट

2
निर्माणों में ऐरे इनिशियलाइज़र की अनुमति नहीं है !!!! आपको कम से कम अपने प्रस्तावों का परीक्षण करना चाहिए, उन्हें पोस्ट करने से पहले ...
Sedat Kilinc
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.