簡體   English   中英

我如何閱讀(即理解)此Java數組?

[英]How do I read (i.e. understand) this Java array?

String[][][] arr  = 
{{ { "a", "b" , "c"}, { "d", "e", null } },{ {"x"}, null },{{"y"}},{ { "z","p"}, {} }};

我有理由相信,這樣的事情最終會在考試中出現,但是在+10年的編碼中,我從未見過如此恐怖的事情。 我肯定可以使用一些技巧來進行心理分析,這樣我就可以弄清楚它對我的真正意義。 當然,我可以通過IntelliJ運行它,但我將無法使用它。

記錄下來,這對我來說很有意義:

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

我建議添加一些縮進,這將幫助您跟蹤此嵌套數組處於什么級別:

String[][][] arr  =  {
    {
        { "a", "b", "c" },
        { "d", "e", null }
    },
    {
        { "x" },
        null
    },
    {
        { "y" }
    },
    {
        { "z", "p" },
        {}
    }
};

有幫助嗎? 我發現這使可視化數據結構和回答“ arr[1][0][0]的值是什么?”這樣的問題變得更加容易。

您可以將String[][][]類型讀為“字符串數組的數組”或“三維字符串數組”。

也許您將從中了解更多,我可以看到這樣的數組:

String[] arr0 = {"a", "b", "c"};
String[] arr1 = {"d", "e", null};
String[] arr2 = {"x"};
String[] arr3 = null;
String[] arr4 = {"y"};
String[] arr5 = {"z", "p"};
String[] arr6 = {};

String[][] arr0_1 = {arr0, arr1};//-->>  {{"a", "b", "c"}, {"d", "e", null}}
String[][] arr2_3 = {arr2, arr3};//-->>  {{"x"}, null}
String[][] arr4_4 = {arr4};      //-->>  {{"y"}}
String[][] arr5_6 = {arr5, arr6};//-->>  {{"z", "p"}, {}}

String[][][] arr = {arr0_1, arr2_3, arr4_4, arr5_6};

相當於

String[][][] arr
        = {
            {//----------------------------
                {"a", "b", "c"},//arr0    |
                                        //|---->arr0_1
                {"d", "e", null}//arr1    |
            },//---------------------------

            {//----------------------------
                {"x"},//arr2              |
                                        //|---->arr2_3
                null  //arr3              |
            },//---------------------------

            {//----------------------------
                {"y"}//arr4               |---->arr4_4
            },//---------------------------

            {//----------------------------
                {"z", "p"},//arr5         |
                                        //|---->arr5_6
                {}//arr6                  |
            }//---------------------------
        };

格式化數組將有助於弄清楚它是行和列的矩陣

String[][][] arr  = 
{
    {{"a", "b" , "c"}, {"d", "e", null} },
    {{"x"           }, null             },
    {{"y"           }                   },
    {{"z", "p"      }, {                }}
};

2列,4行

0,0處的元素: {"a", "b" , "c"}

元素位於0,1: {"d", "e", null}

元素位於1,0: {"x"}

1,1處的元素: null

String[][][] arr = {

            // arr[0]
            {
                    /* arr[0][0] */
                    {
                            /* arr[0][0][0] */ "a",
                            /* arr[0][0][1] */ "b",
                            /* arr[0][0][2] */ "c"
                    },

                    /* arr[0][1] */
                    {
                            /* arr[0][1][0] */ "d",
                            /* arr[0][1][1] */ "e",
                            /* arr[0][1][2] */ null
                    }
            },

            // arr[1]
            {
                    /* arr[1][0] */
                    {
                            /* arr[1][0][0] */ "x"
                    },

                    /* arr[1][1] */
                    null
            },

            // arr[2]
            {
                    /* arr[2][0] */
                    {
                            /* arr[2][0][0] */ "y"
                    }
            },

            // arr[3]
            {
                    /* arr[3][0] */
                    {
                            /* arr[3][0][0] */ "z",
                            /* arr[3][0][1] */ "p"
                    },

                    /* arr[3][1] */
                    {}
            }
    };

建立在@smarx答案上:

// [][][] is an array of 2D arrays
String[][][] arr = { // begin declaration of arr
    // first 2D array
    {
        {"[0][0][0]", "[0][0][1]", "[0][0][2]"},
        {"[0][1][0]", "[0][1][1]", null, "[0][1][3]"}
    },
    // second 2D array
    {
        {"[1][0][0]", "[1][0][1]"},
        null // we should check for this when reading
    },
    // third 2D array
    {
        {"[2][0][0]", "[2][0][1]", "[2][0][2]"}
    },
    // fourth 2D array
    {
        {"[3][0][0]", "[3][0][1]"},
        {}
    },
    // fifth 2D array
    {
        {"[4][0][0]", "[4][0][1]", "[4][0][2]"},
        {"[4][1][0]", "[4][1][1]"},
        {"[4][2][0]", "[4][2][1]", "[4][2][2]"}
    }   
};

// Reading the 3D array, as: [x][y][z]
for (int x = 0; x < arr.length; x++) {
    for (int y = 0; y < arr[x].length; y++) {
        // one of our 2D arrays has a null array, 
        // declared in the line: {"[0][1][0]", "[0][1][1]", null, "[0][1][3]"}
        if (arr[x][y] != null) {
            for (int z = 0; z < arr[x][y].length; z++) {
                System.out.println(arr[x][y][z]);
            }
        } else {
            System.out.println("null 2D array");
        }
    }
}

我們必須檢查null數組,因為我們正在嘗試訪問某些內容,但它不存在。 空字符串不需要檢查(用於打印),因為Java在打印時已經進行了此檢查,請參見為什么空引用將打印為“空”?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM