Arrays multidimensionales

Arrays multidimensionales

Ya aprendiste que usamos arrays para almacenar una lista de objetos.

En Java también podemos crear arrays multidimensionales.

  • Un array bidimensional puede almacenar una matriz.
  • Un array tridimensional puede almacenar datos de un cubo.

Estos son útiles en cálculos científicos. Te lo mostraré.

De 1D a 2D (agregar palitos)

Aquí tenemos un array unidimensional.

Para convertirlo en bidimensional, necesitamos añadir otro par de corchetes.

Array bidimensional (2 filas x 3 columnas)

Supongamos que queremos una matriz de dos por tres.

public class Main {
    public static void main(String[] args) {
        // Parte 1: primitivos (copia por valor)
       int [][] matriz = new int[2][3];
       matriz[0][0] = 1;
       System.out.println(Arrays.toString(matriz));
    }
}

Imprimir 2D con toString (sale raro)

Fíjense. De nuevo obtenemos esta cadena extraña:

[[I@27716f4, [I@8efb846]

Porque aquí estamos tratando con un array multidimensional.

Solución: deepToString

Para imprimir arrays multidimensionales usamos:

Arrays.deepToString(...)

import java.awt.*;
import java.util.Arrays;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        // Parte 1: primitivos (copia por valor)
       int [][] matriz = new int[2][3];
       matriz[0][0] = 1;
       System.out.println(Arrays.deepToString(matriz));
    }
}

Ahora sí: matriz 2x3

Ahora tenemos esta matriz:

  • 2 filas
  • 3 columnas en cada fila

Array tridimensional (cubo)

También podemos crear un array tridimensional.

Solo agregamos otro par de corchetes y especificamos esa longitud.

import java.awt.*;
import java.util.Arrays;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        // Parte 1: primitivos (copia por valor)
       int [][][] matriz = new int[2][3][5];
       System.out.println(Arrays.deepToString(matriz));
    }
}

Sintaxis con llaves (2D)

Ahora, ¿qué pasa con la sintaxis de las llaves?

Revirtamos esto a un array bidimensional:

  • eliminamos new
  • usamos llaves { }

2D con llaves (lista de filas)

import java.awt.*;
import java.util.Arrays;
import java.util.Date;

public class Main {
    public static void main(String[] args) {
        // Parte 1: primitivos (copia por valor)
       int [][] matriz = {{1,2,3}, {4, 5, 6}};
       System.out.println(Arrays.deepToString(matriz));
    }
}

Idea clave de 2D con llaves

Cada fila es un array en sí mismo, porque es una lista de elementos, ¿verdad?

  • Primera fila: {1,2,3}
  • Segunda fila: {4,5,6}

Imprimimos con Arrays.deepToString y vemos el resultado final.

Ejemplo final (Scanner + índices)

import java.util.Scanner;

public class LetraIndex {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // Pedimos una letra
        System.out.print("Escribe una letra de la A a la Y: ");
        char c = sc.next().toUpperCase().charAt(0);

        // Calculamos el índice (A=0, B=1, ..., Y=24)
        int index = c - 'A';

        // Calculamos fila y columna en la matriz 5x5
        int fila = index / 5;   // división entera
        int col  = index % 5;   // residuo de dividir entre 5

        // Mostramos la información
        System.out.println("Letra: " + c);
        System.out.println("Index: " + index);
        System.out.println("Fila: " + fila);
        System.out.println("Columna: " + col);
    }
}