Я пытаюсь понять многомерные массивы в Java, но я думаю, что это применимо к любому языку. Пожалуйста, рассмотрите этот фрагмент, который я нашел в Интернете:
//************************************
// static array initialization
//************************************
byte[][] smallArray = { { 10, 11, 12, 13 },
{ 20, 21, 22, 23 },
{ 30, 31, 32, 33 },
{ 40, 41, 42, 43 }, };
// Display the array element at row 2, column 3
System.out.println(smallArray[1][2]);
// Value is 21
Почему 21? Я думал, что это будет 22.
Я посмотрел это, потому что я пытаюсь выяснить, что означает длина в этом контексте:
public class Pieces {
int thePieces[][][];
public Pieces(){
}
public int[][][] createPieces(){
/* pieces in order below
**** [0]
**
**
*
****
*
****
***
*
**
**
**
** [6]
*
*
*
*/
int myPieces [][][] =
{
{ //square
{0,0},
{1,0},
{1,1},
{0,1}
},
{ //T
{-1,0},
{0,0},
{0,1},
{1,0}
}
};
thePieces = myPieces;
return thePieces;
}
public void printPieces(){
System.out.println(thePieces[0][0].length);
}
}
Я пытаюсь выучить Java, создав клон тетриса. Чего я не понимаю, так это того, почему требуется длина [] []. Это был единственный способ, которым я мог добраться до работы. Я пробовал thePieces [0] [0] [0] .length, но получил ошибку, которую я не понял?
Почему бы мне не поставить [] [] [], чтобы получить ссылку? Я видел в Интернете, где первый «уровень» массива ссылался на myArray.length вместо myArray []. Length. Что тогда я говорю с myArray [] []. Length (кажется, 2-й, 3-й уровни, но я не получаю то, что ожидаю)?
Я запустил свой кусок кода и получил 2. Я понятия не имею, почему это два. Потому что у меня два сета на третьем уровне? Я ожидал получить четыре из-за четырех наборов очков.
Спасибо, что помогли мне понять.
РЕДАКТИРОВАТЬ: я понял, почему это два. Это дает мне два очка в самом глубоком сете. Если бы я хотел четыре, я бы использовал thePieces [0] .length. Но как насчет первого примера? Это опечатка?