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 en otra entrada anterior son arrays unidimensionales porque solo utilizan un índice para acceder a cada elemento.
Una matriz necesita dos índices para acceder 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 M de 3 filas y 5 columnas:
Para procesar ( recordar solo operaciones y comparaciones) internamente todos los elementos de la tabla se ocupan dos ciclos for(), uno externo para controlar renglón y uno interno para controlar columna.
Ejemplo de un Arreglo Bidimensional.
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
public class Arreglo_Bidimensional
{
public static void main (String args[])
{
int arreglo1[][];
int arreglo2[][];
int arreglo3[][];
int Nfilas, Mcolumnas;
String entrada, entrada1, entrada2;
JTextArea areaSalida = new JTextArea();
areaSalida.setText(" #########################\n");
areaSalida.append(" Arreglo Bidimensional\n");
areaSalida.append(" #########################\n\n");
entrada = JOptionPane.showInputDialog("Introduce el Numero de Filas para el Arreglo");
Nfilas = Integer.parseInt( entrada );
entrada1 = JOptionPane.showInputDialog("Introduce el Numero de Columnas para el Arreglo");
Mcolumnas = Integer.parseInt( entrada1 );
arreglo1 = new int[Nfilas][Mcolumnas];
arreglo2 = new int[Nfilas][Mcolumnas];
arreglo3 = new int[Nfilas][Mcolumnas];
areaSalida.append("Numero de filas son:\n " + Nfilas);
areaSalida.append("\nNumero de columnas son:\n " + Mcolumnas + "\n");
int i, j;
areaSalida.append("Arreglo 1: \n");
for(i = 0; i < Nfilas; i++)
{
for(j = 0; j < Mcolumnas; j++)
{
entrada2 = JOptionPane.showInputDialog("Introduzca el elemento de la fila " +(i)+ " y columna " +(j)+" del Arreglo1");
arreglo1[i][j] = Integer.parseInt( entrada2 );
areaSalida.append(" " + arreglo1[i][j] + " - ");
}
areaSalida.append(" \n");
}
areaSalida.append("Arreglo 2 : \n");
for(i = 0; i < Nfilas; i++)
{
for(j = 0; j < Mcolumnas; j++)
{
entrada2 = JOptionPane.showInputDialog("Introduzca el elemento de la fila " +(i)+ " y columna " +(j)+" del Arreglo2");
arreglo2[i][j] = Integer.parseInt( entrada2 );
areaSalida.append(" " + arreglo2[i][j] + " - ");
}
areaSalida.append("\n");
}
areaSalida.append("La suma del Arreglo 1 + Arreglo 2 = Arreglo 3 \n");
for(i = 0; i < Nfilas; i++)
{
for(j = 0; j < Mcolumnas; j++)
{
arreglo3[i][j] = arreglo1[i][j] + arreglo2[i][j];
areaSalida.append(" " + arreglo1[i][j] + " + " + arreglo2[i][j] + " = " + arreglo3[i][j] + "\n");
}
areaSalida.append("\n");
}
JOptionPane.showMessageDialog(null, areaSalida);
}
}
Output: