Estoy tratando de comprender matrices multidimensionales en Java, pero creo que se aplica a cualquier idioma. Considere este fragmento que encontré en la web:¿Cómo hago referencia a las matrices multidimensionales?
//************************************
// 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
¿Por qué es 21? Pensé que sería 22.
Miré esto porque estoy tratando de averiguar qué longitud significa en este contexto:
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);
}
}
Estoy tratando de aprender Java mediante la creación de un clon de Tetris. Lo que no entiendo es por qué se requiere longitud para usar [] []. Era la única forma en que podía llegar al trabajo. Probé los Pieces [0] [0] [0] .length pero obtuve un error que no entendí?
¿Por qué no tengo que poner [] [] [] para obtener la referencia? Vi en línea donde se hizo referencia al primer "nivel" de la matriz myArray.length en lugar de myArray []. Length. ¿Qué estoy diciendo con myArray [] []. Length (parece segundo, tercer nivel pero no obtengo lo que esperaba)?
Corrí mi código de pieza y obtuve 2. No tengo idea de por qué son dos. ¿Es porque tengo dos juegos en el tercer nivel? Esperaba obtener cuatro debido a los cuatro conjuntos de puntos.
Gracias por ayudarme a entender.
EDIT: Descubrí por qué son dos. Me está dando mis dos puntos en el conjunto más interno. Si quisiera cuatro, usaría ThePieces [0] .length. Pero, ¿qué pasa con el primer ejemplo? ¿Es un error tipográfico?
Supongo que es solo un error tipográfico. Gracias. – johnny