जावा में एक बहुआयामी सरणी की शुरुआत


81

बहुआयामी सरणी घोषित करने और उसे मान प्रदान करने का सही तरीका क्या है?

यह वही है जो मेरे पास है:

int x = 5;
int y = 5;

String[][] myStringArray = new String [x][y];

myStringArray[0][x] = "a string";
myStringArray[0][y] = "another string";

जवाबों:


64

उपयुक्त पंक्तियों को बदलने का प्रयास करें:

myStringArray[0][x-1] = "a string";
myStringArray[0][y-1] = "another string";

क्योंकि उप सरणियों की लंबाई है आपका कोड गलत है yके लिए सेटिंग तो 0. पर, और अनुक्रमण शुरू होता है myStringArray[0][y]या myStringArray[0][x]क्योंकि सूचकांक असफल हो जायेगी xऔर yसीमा से बाहर हैं।

String[][] myStringArray = new String [x][y];आयताकार बहुआयामी सरणी को इनिशियलाइज़ करने का सही तरीका है। यदि आप चाहते हैं कि यह दांतेदार हो (प्रत्येक उप-सरणी में संभावित रूप से एक अलग लंबाई है) तो आप इस उत्तर के समान कोड का उपयोग कर सकते हैं । हालांकि ध्यान दें कि जॉन का दावा है कि आपको उप-सरणियों को मैन्युअल रूप से बनाना होगा उस मामले में गलत है जहां आप एक बिल्कुल आयताकार बहुआयामी सरणी चाहते हैं।


105

जावा में "सच" बहुआयामी सरणियाँ नहीं हैं।

उदाहरण के लिए, arr[i][j][k]के बराबर है ((arr[i])[j])[k]। दूसरे शब्दों में, सरणियों का, सारणियोंarr का मात्र एक सरणी है

इसलिए, यदि आप जानते हैं कि सरणियाँ कैसे काम करती हैं, तो आप जानते हैं कि बहुआयामी सरणियाँ कैसे काम करती हैं!


घोषणा:

int[][][] threeDimArr = new int[4][5][6];

या, आरंभीकरण के साथ:

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

पहुंच:

int x = threeDimArr[1][0][1];

या

int[][] row = threeDimArr[1];

स्ट्रिंग प्रतिनिधित्व:

Arrays.deepToString(threeDimArr);

पैदावार

"[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]"

उपयोगी लेख


3
यह कैसे एक "सच" बहुआयामी सरणी नहीं है?
दिनांक 27'13

13
"सच" बहुआयामी सरणियों के साथ मैं "गैर-दांतेदार" सरणियों का उल्लेख करता हूं। दांतेदार सरणियों और "सच" बहुआयामी सरणियों के बीच अंतर के लिए, इस प्रश्न को देखें ।
aioobe

2
एक int[i][j][k]की लंबाई है i, इसलिए वास्तव में यह एक के बराबर है ((int[k])[j])[i]। घोषणा में आकार प्रकारों के संबंध में पीछे की ओर लिखे गए हैं, मुझे लगता है कि गणित में बहुआयामी सरणियों को अधिक निकटता से तैयार किया जाता है।
मिलोज्ज

Arrays.deepToString का उल्लेख करने के लिए धन्यवाद।
samir105

60

आप निम्न निर्माण का भी उपयोग कर सकते हैं:

String[][] myStringArray = new String [][] { { "X0", "Y0"},
                                             { "X1", "Y1"},
                                             { "X2", "Y2"},
                                             { "X3", "Y3"},
                                             { "X4", "Y4"} };

13

आप बहु आयामी सरणियों की घोषणा कर सकते हैं जैसे:

// 4 x 5 String arrays, all Strings are null
// [0] -> [null,null,null,null,null]
// [1] -> [null,null,null,null,null]
// [2] -> [null,null,null,null,null]
// [3] -> [null,null,null,null,null]

String[][] sa1 = new String[4][5];
for(int i = 0; i < sa1.length; i++) {           // sa1.length == 4
    for (int j = 0; j < sa1[i].length; j++) {     //sa1[i].length == 5
        sa1[i][j] = "new String value";
    }
}


// 5 x 0  All String arrays are null
// [null]
// [null]
// [null]
// [null]
// [null]
String[][] sa2 = new String[5][];
for(int i = 0; i < sa2.length; i++) {
    String[] anon = new String[ /* your number here */];
    // or String[] anon = new String[]{"I'm", "a", "new", "array"};
    sa2[i] = anon;
}

// [0] -> ["I'm","in","the", "0th", "array"]
// [1] -> ["I'm", "in", "another"]
String[][] sa3 = new String[][]{ {"I'm","in","the", "0th", "array"},{"I'm", "in", "another"}};

9

जावा में बहुआयामी सरणी

एक बहुआयामी सरणी लौटना

जावा नहीं करता है वास्तव में बहुआयामी सरणियों समर्थन करते हैं। जावा में, एक द्वि-आयामी सरणी केवल सरणियों का एक सरणी है, एक त्रि-आयामी सरणी सरणियों के सरणी का एक सरणी है, एक चार-आयामी सरणी सरणियों के सरणियों का एक सरणी है, और इसी तरह ...

हम दो आयामी सरणी को परिभाषित कर सकते हैं:

  1. int[ ] num[ ] = {{1,2}, {1,2}, {1,2}, {1,2}}

  2. int[ ][ ] num = new int[4][2]

    num[0][0] = 1;
    num[0][1] = 2;
    num[1][0] = 1;
    num[1][1] = 2;
    num[2][0] = 1;
    num[2][1] = 2;
    num[3][0] = 1;
    num[3][1] = 2;
    

    यदि आप आवंटित नहीं करते हैं, तो आइए num[2][1]बताते हैं , यह आरंभिक नहीं है और फिर इसे स्वचालित रूप से 0 आवंटित किया जाता है, अर्थात् num[2][1] = 0;

  3. नीचे, num1.lengthआप पंक्तियाँ देता है।

  4. जबकि num1[0].lengthआपको संबंधित तत्वों की संख्या देता है num1[0]। यहाँ num1[0]संबंधित सरणियाँ num1[0][0]और num[0][1]केवल है।

  5. यहां हमने एक forलूप का उपयोग किया जो हमें गणना करने में मदद करता है num1[i].length। यहाँ iएक लूप के माध्यम से वेतन वृद्धि की जाती है।

    class array
    {
        static int[][] add(int[][] num1,int[][] num2)
        {
            int[][] temp = new int[num1.length][num1[0].length];
            for(int i = 0; i<temp.length; i++)
            {
                for(int j = 0; j<temp[i].length; j++)
                {
                    temp[i][j] = num1[i][j]+num2[i][j];
                }
            }
            return temp;
        }
    
        public static void main(String args[])
        {
            /* We can define a two-dimensional array as
                 1.  int[] num[] = {{1,2},{1,2},{1,2},{1,2}}
                 2.  int[][] num = new int[4][2]
                     num[0][0] = 1;
                     num[0][1] = 2;
                     num[1][0] = 1;
                     num[1][1] = 2;
                     num[2][0] = 1;
                     num[2][1] = 2;
                     num[3][0] = 1;
                     num[3][1] = 2;
    
                     If you don't allocate let's say num[2][1] is
                     not initialized, and then it is automatically
                     allocated 0, that is, automatically num[2][1] = 0;
                  3. Below num1.length gives you rows
                  4. While num1[0].length gives you number of elements
                     related to num1[0]. Here num1[0] has related arrays
                     num1[0][0] and num[0][1] only.
                  5. Here we used a 'for' loop which helps us to calculate
                     num1[i].length, and here i is incremented through a loop.
            */
            int num1[][] = {{1,2},{1,2},{1,2},{1,2}};
            int num2[][] = {{1,2},{1,2},{1,2},{1,2}};
    
            int num3[][] = add(num1,num2);
            for(int i = 0; i<num1.length; i++)
            {
                for(int j = 0; j<num1[j].length; j++)
                    System.out.println("num3[" + i + "][" + j + "]=" + num3[i][j]);
            }
        }
    }
    

4

मैं जोड़ता हूँ कि यदि आप आयाम पढ़ना चाहते हैं, तो आप यह कर सकते हैं:

int[][][] a = new int[4][3][2];

System.out.println(a.length);  // 4
System.out.println(a[0].length); // 3
System.out.println(a[0][0].length); //2

आप दांतेदार ऐरे भी कर सकते हैं , जहां विभिन्न पंक्तियों में अलग-अलग लंबाई होती है, इसलिए a[0].length != a[1].length



-3

आप इसे शुरू करने के लिए देख सकते हैं:

    int [][][] i = {                //third dimension curly brace
                     {               // second dimension curly brace
                        {            //first dimension curly brace
                           1,1,1    //elements
                        },           
                    {3,3,3},    
                    {2,2,2}     
                      },
                      {
                         {
                          1,1,1
                         },
                         {3,3,3},
                         {2,2,2}
                       }
                    };      

2
यह एक उत्तर है या क्या?
मेथम-15

7
फिर मुझे आशा है कि वह इसे खाने के लिए भूखा है
maytham-'Aug
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.