[英]Basic Question, how to read a chart (i.e. a user input his age, sex, social number…) - 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.