Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Tablas de dos dimensiones

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

35 minutos

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

PalabraQué significaEjemplo
TablaDatos ordenados en filas y columnas. En Java es un array de arrays.int[][] sales
FilaUna línea horizontal de la tabla. Es el primer índice.sales[1]
ColumnaUna línea vertical de la tabla. Es el segundo índice.sales[1][2]
Dos índicesPara una caja dices primero la fila y después la columna.sales[fila][columna]
CeldaUna 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

Código: java
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íaBocadillos [0]Zumos [1]Cafés [2]Total del día
Lunes [0]128525
Martes [1]910726
Miércoles [2]156425
Total36241676

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

Código: java
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

Código: java
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 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

La lección continúa

4 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.