Sintaxis para crear una matriz bidimensional en Java

Resuelto AppSensei asked hace 12 años • 13 respuestas

Considerar:

int[][] multD = new int[5][];
multD[0] = new int[10];

¿Es así como se crea una matriz bidimensional con 5 filas y 10 columnas?

Vi este código en línea, pero la sintaxis no tenía sentido.

AppSensei avatar Sep 02 '12 04:09 AppSensei
Aceptado

Pruebe lo siguiente:

int[][] multi = new int[5][10];

... que es una abreviatura de algo como esto:

int[][] multi = new int[5][];
multi[0] = new int[10];
multi[1] = new int[10];
multi[2] = new int[10];
multi[3] = new int[10];
multi[4] = new int[10];

Tenga en cuenta que cada elemento se inicializará con el valor predeterminado para int, 0por lo que lo anterior también equivale a:

int[][] multi = new int[][] {
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};

... o, más sucintamente,

int[][] multi = {
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};
obataku avatar Sep 01 '2012 21:09 obataku

Podemos declarar una matriz bidimensional y almacenar directamente elementos en el momento de su declaración como:

int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}};

Aquí int representa elementos de tipo entero almacenados en la matriz y el nombre de la matriz es "marcas". int es el tipo de datos de todos los elementos representados dentro de las llaves "{" y "}" porque una matriz es una colección de elementos que tienen el mismo tipo de datos.

Volviendo a nuestra declaración escrita anteriormente: cada fila de elementos debe escribirse dentro de las llaves. Las filas y los elementos de cada fila deben estar separados por comas.

Ahora observe la afirmación: puede obtener que hay 3 filas y 5 columnas, por lo que la JVM crea 3 * 5 = 15 bloques de memoria. Estos bloques pueden denominarse individualmente como:

marks[0][0]  marks[0][1]  marks[0][2]  marks[0][3]  marks[0][4]
marks[1][0]  marks[1][1]  marks[1][2]  marks[1][3]  marks[1][4]
marks[2][0]  marks[2][1]  marks[2][2]  marks[2][3]  marks[2][4]


NOTA:
Si desea almacenar n elementos, el índice de la matriz comienza desde cero y termina en n-1 . Otra forma de crear una matriz bidimensional es declarar la matriz primero y luego asignarle memoria mediante el uso del nuevo operador.

int marks[][];           // declare marks array
marks = new int[3][5];   // allocate memory for storing 15 elements

Combinando los dos anteriores podemos escribir:

int marks[][] = new int[3][5];
Indu Joshi avatar Aug 05 '2013 07:08 Indu Joshi

Puede crearlos tal como otros lo han mencionado. Un punto más para agregar: incluso puedes crear una matriz bidimensional sesgada con cada fila, que no necesariamente tenga la misma cantidad de columnas, como esta:

int array[][] = new int[3][];
array[0] = new int[3];
array[1] = new int[2];
array[2] = new int[5];
Victor Mukherjee avatar Sep 01 '2012 21:09 Victor Mukherjee