Arrays multidimensionales¶
Concepto de matriz¶
Un array en Java puede tener más de una dimensión. El caso más general son los arrays bidimensionales también llamados matrices o tablas. La dimensión de un array la determina el número de índices necesarios para acceder a sus elementos. Los vectores que hemos visto hasta ahora son arrays unidimensionales porque solo utilizan un índice para acceder a cada elemento. Pero una matriz necesita dos índices para el acceso a sus elementos.
Gráficamente podemos representar una matriz como una tabla de n filas y m columnas cuyos elementos son todos del mismo tipo. La siguiente figura representa un array denominado M de 3 filas y 5 columnas:

Pero en realidad una matriz en Java es un array de arrays. Gráficamente podemos representar la disposición real en memoria del array anterior así:

La longitud del array M (M.lentgh
) es 3. La longitud de cada fila del array (M[i].length
) es 5. Para acceder a cada elemento de la matriz se utilizan dos índices. El primero indica la fila y el segundo la columna. De esta forma vemos que el elemento M[1][3]
tiene valor 8.
Se crean de forma similar a los arrays unidimensionales, añadiendo un índice. Por ejemplo, para declarar una matriz de datos de tipo int llamada ventas de 4 filas y 6 columnas:
int [][] ventas = new int[4][6];
Inicialización de matrices¶
Un array es un objeto, por lo tanto, cuando se crea, a sus elementos se les asigna automáticamente un valor inicial. También podemos dar otros valores iniciales al array cuando se crea. Los valores iniciales se escriben entre llaves separados por comas. Los valores que se le asignen a cada fila aparecerán a su vez entre llaves separados por comas. El número de valores determina el tamaño de la matriz.
Por ejemplo: int [][] números = {{6,7,5}, {3, 8, 4}, {1,0,2}, {9,5,2}};
se crea la matriz números de tipo int, de 4 filas y 3 columnas, y se le asignan esos valores iniciales.
Recorriendo matrices
Para recorrer una matriz se anidan dos bucles for
. En general, para recorrer un array multidimensional se anidan tantas instrucciones for
como dimensiones tenga el array.
int[][] matrix = new int[4][4];
for (int i = 0; i < matrix.length; i++){
System.out.print("row " + i + " : ");
for (int j = 0; j < matrix[i].length; j++){
System.out.print("col " + j + " ");
}
System.out.println();
}
Actividad¶
- PR 513 (RA6 /CE6a / IC2 / 5p) Se solicita crear la APP de los GymBros. Para ello vamos a usar una matriz en la que almacenaremos el progreso de una semana. La APP nos permitirá realizar las siguientes funciones:
- Introducir peso diario, el día que se introduzca será la posición del array menos 1. Todos los días se introducirán todos los pesos de:
- Back Squat
- Front Squat
- Bench Press
- Dead Lift
- La opción de ordenar los pesos por ejercicio, de menor a mayor de cada uno de los ejercicios y mostrarlo por pantalla.
- Calcular el RM de todos los ejercicios y mostrar el número del día de la semana original.
- Mostrar los días que has entrenado el ejercicio.
- Introducir peso diario, el día que se introduzca será la posición del array menos 1. Todos los días se introducirán todos los pesos de: