如果我想從用戶那里獲取元素數量,如何制作這種陣列(每個父陣列中的元素數量不同):
int[][][] test = {
{
{0, 0, 0},
{0, 0, 0}
},
{
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}
}
};
uj5u.com熱心網友回復:
您所描述的稱為鋸齒狀陣列,該陣列的元素是長度不等的陣列。您可以提示用戶輸入,然后使用這些輸入來初始化您的鋸齒狀陣列:
int size;
int myArray[][][];
Scanner s = new Scanner();
// Initialize outer array
System.out.println("How many elements in myArray?");
size = s.nextInt();
myArray = new int[size][][];
// Initialize each inner array
for (int i = 0; i < myArray.length; i ) {
System.out.println("How many elements in myArray[" i "]?");
size = s.nextInt();
myArray[i] = new int[size][];
// For each inner array, initialize each inner inner array
for (int j = 0; j < myArray[i].length; j ) {
System.out.println("How many elements in myArray[" i "][" j "]?");
size = s.nextInt();
myArray[i][j] = new int[size];
}
}
uj5u.com熱心網友回復:
你很幸運。Java 根本沒有 2D 或 3D 陣列。它只有陣列陣列。您粘貼的代碼片段只是作業中的語法糖。
因此:
int[][] chessboard = new int[8][];
int row0 = new int[8];
chessboard[0] = row0;
Anint[][]只是一個一維陣列,其中陣列中的每個元素本身都是一個int[]. 看看上面,我們如何創建一個一維 int 陣列并將其分配給變數的0槽chessboard,從而證明chessboard是一維的。
忘記語法糖并按上述方式制作陣列,然后您就可以完全控制并且可以使每個“內部”陣列成為您想要的任何大小。唯一奇怪的是如何初始化它們。new int[8][]是非語法糖版本:這使得 int 陣列的一維陣列有 8 的空間int[],并且像所有普通陣列初始化一樣,以 8 個空指標開始,與 eg 完全相同String[] x = new String[8],它不產生字串,然后 egx[0]將是null。
然后您可以隨意撥打電話chessboard[0] = new int[8],等等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/346642.html
