El horario del instituto
Mira tu horario. Tiene filas, que son los días, y columnas, que son las horas.
Para saber qué tienes el martes a segunda hora, buscas la fila del martes y la columna de segunda hora.
Un array normal es una sola fila de cajas. Para una tabla como esta, Java usa un array de dos dimensiones.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Tabla | Datos ordenados en filas y columnas. En Java es un array de arrays. | int[][] sales |
| Fila | Una línea horizontal de la tabla. Es el primer índice. | sales[1] |
| Columna | Una línea vertical de la tabla. Es el segundo índice. | sales[1][2] |
| Dos índices | Para una caja dices primero la fila y después la columna. | sales[fila][columna] |
| Celda | Una caja de la tabla, donde se cruzan una fila y una columna. | sales[0][0] |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Crear una tabla
Escribes dos pares de corchetes: String[][]. Dentro de las llaves va una fila entre llaves, y después otra.
Cada fila es un array normal. Todas juntas forman la tabla.
Para leer una celda usas dos índices: timetable[1][2]. Primero la fila y después la columna.
Pruébalo: leer el horario
public class Main {
public static void main(String[] args) {
// Fila 0: lunes. Fila 1: martes.
String[][] timetable = {
{"Programación", "Bases de datos", "Inglés"},
{"Sistemas", "Programación", "Tutoría"}
};
System.out.println("Lunes, primera hora: " + timetable[0][0]);
System.out.println("Martes, tercera hora: " + timetable[1][2]);
System.out.println("Días: " + timetable.length);
System.out.println("Horas: " + timetable[0].length);
// Escribe la segunda hora del martes.
}
}
Fila primero, columna después
Los índices empiezan en 0, como siempre. La primera fila es la 0 y la primera columna es la 0.
timetable.length te da cuántas filas hay. timetable[0].length te da cuántas columnas tiene la primera fila.
Si mezclas el orden, miras otra celda o te sales de la tabla.
Ejemplo resuelto: las ventas del bar
| Día | Bocadillos [0] | Zumos [1] | Cafés [2] | Total del día |
|---|---|---|---|---|
| Lunes [0] | 12 | 8 | 5 | 25 |
| Martes [1] | 9 | 10 | 7 | 26 |
| Miércoles [2] | 15 | 6 | 4 | 25 |
| Total | 36 | 24 | 16 | 76 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Recorrer toda la tabla
Para pasar por todas las celdas usas dos bucles, uno dentro de otro. Lo viste en la lección de bucles dentro de bucles.
El de fuera recorre las filas. El de dentro recorre las columnas de esa fila.
En la tabla de ventas, sales[1][2] vale 7: los cafés del martes.
Pruébalo: escribir todas las ventas
public class Main {
public static void main(String[] args) {
int[][] sales = {
{12, 8, 5},
{9, 10, 7},
{15, 6, 4}
};
for (int row = 0; row < sales.length; row++) {
for (int column = 0; column < sales[row].length; column++) {
System.out.print(sales[row][column] + " ");
}
// Al acabar la fila, saltamos de línea.
System.out.println();
}
}
}
Cuidado con el orden
Advertencia
En sales[row][column] la fila va primero. sales[2][0] es el miércoles, bocadillos: 15. Pero sales[0][2] es el lunes, cafés: 5. No son lo mismo.
Sumar por filas y por columnas
Sumar una fila es fácil: la fila queda fija y recorres las columnas.
Para sumar una columna haces lo contrario: la columna queda fija y recorres las filas.
Con las ventas, la fila del lunes suma 12 + 8 + 5 = 25. La columna de los zumos suma 8 + 10 + 6 = 24.
Pruébalo: totales del bar
public class Main {
public static void main(String[] args) {
int[][] sales = {{12, 8, 5}, {9, 10, 7}, {15, 6, 4}};
// La fila 0 queda fija: es el lunes.
int monday = 0;
for (int column = 0; column < sales[0].length; column++) {
monday = monday + sales[0][column];
}
System.out.println("Ventas del lunes: " + monday);
// La columna 1 queda fija: son los zumos.
int juices = 0;
for (int row = 0; row < sales.length; row++) {
juices = juices + sales[row][1];
}
System.out.println("Zumos en tres días: " + juices);
}
}
Repaso rápido
Inténtalo
Repaso rápido
3 preguntasTus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.