Arrays multidimensionales en Java

Hola a todos, hoy os explicare como funcionan los arrays multidimensionales en Java.

Un array multimensional son mas de un array unidimensional unidos, para que te hagas una idea, es como si fuera una tabla. Se crea igual que un array unidimensional, solo hay que añadir un corchete mas con un tamaño en la definición del array. Veamos un ejemplo:

public class PruebaApp {

	public static void main(String[] args) {

		//Definimos un array de 3 filas x 5 columnas
		int array[][]=new int [3][5];

	}

}

Como vemos, añadimos un corchete mas después del nombre y del tamaño. El primer corchete son las filas y el segundo son las columnas.

Para asignar un valor, debemos indicar una posicion en las filas y columnas. Por ejemplo:

public class PruebaApp {

	public static void main(String[] args) {

		//Definimos un array de 3 filas x 5 columnas
		int array[][]=new int [3][5];

		//Asignamos un 5 al array, en la fila 0 columna 1
		array[0][1]=5;

	}

}

También existe una forma de realizar las dos anteriores acciones de una forma más rápida. Esta es su sintaxis:

tipo_dato nombre_array={{valor, valor, valor}, {valor, valor, valor}};

Como vemos por cada fila se abre una llave. Veamos como se hace:

public class PruebaApp {

	public static void main(String[] args) {

		//Definimos un array de 3 filas x 5 columnas
		int array[][]={{1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}};

	}

}

Para recorrer un array, debemos usar un bucle anidado, donde el primer bucle controla las filas y el de dentro las columnas. Veamos un ejemplo:

public class PruebaApp {

	public static void main(String[] args) {

		//Definimos un array de 3 filas x 5 columnas
		int array[][]={{1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}};

		//Recorremos el array multidimensional
		for (int i=0;i<array.length;i++){
			for(int j=0;j<array[0].length;j++){
				System.out.println(array[i][j]);
			}
		}
	}

}

Como vemos en el ejemplo anterior, vemos array.length, devuelve la longitud de las filas (3) y array[0].lenght devuelve la longitud de las columnas (5).

¿Podemos recorrer una sola fila o columna del array? Si podemos, para ello solo tenemos que usar un bucle, indicando que es lo que vamos a recorrer. Veamos un ejemplo:

public class PruebaApp {

	public static void main(String[] args) {

		//Definimos un array de 3 filas x 5 columnas
		int array[][]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};

		//Recorremos la primera columna de todas las filas
		for(int i=0;i<array.length;i++){
			System.out.println(array[i][0]);
		}

		//Recorremos todas las columnas de la segunda fila
		for(int i=0;i<array[0].length;i++){
			System.out.println(array[1][i]);
		}

	}

}

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

5 comentarios

  1. Jan

    Me Apoyas con esto: Con su Clase y con el BufferedReader o Scanner

    Desarrollar un programa que permita simular el juego de batalla naval (2 jugadores), para ello debe generar 2 matrices de 4 x 6, una matriz será asignada a cada jugador. Al iniciar el programa debe ocupar 3 celdas o casilleros de la matriz de cada jugador con valores de 3, simulando los barco de cada oponente, de forma aleatoria, seguidamente el jugador uno debe ingresar una coordenada entre las filas 1 a la 4 y las columnas 1 a la 6, si la coordenada coincide con algún valor de la coordenada de un barco el jugador obtiene un punto, luego es el turno del siguiente jugador, gana el jugador que obtiene los 3 puntos o acierta las coordenadas de los 3 barcos de su oponente.

  2. Carmen

    Me parece muy bien este blog, hasta ahora tengo claro lo de los array, pero mi pregunta es, ¿Como hago, o como escribo la condición para que el programa mi imprima todas las filas donde hay un elemento común en específico?

    Tengo un arreglo grande, pero yo quiero que cuando trate un número «x» que se repite en varias filas, que el sistema, me imprima todas las filas en las que se repite ese «x».
    Gracias!!!

  3. Saida

    y si tengo dos arrays multidimensionales (bidimensionales concretamente) una con nombres de alumnos y otra con las notas…. Algo así:

    String alumClasse[][] {
    {«Raul»,»Ivan»,»Lucas»,»vacio»,»alex»,»vacio»}, //0
    {«Jordi»,»Quique»,»vacio»,»vacio»,»Marc»,»Pepe»}, //1
    {«Judith»,»David»,»vacio»,»Didier»,»Beatriz»,»Luis»}, //2
    {«Saida»,»Rubens»,»Adrian»,»vacio»,»vacio»,»Alex»}, //3
    {«Joel»,»vacio»,»Diego»,»Sergio»,»Borja»,»vacio»} //4
    };

    Short alumNota [][] {
    {8,6,8,0,7,0}, //0
    {5,5,0,0,9,9}, //1
    {0,6,0,10,6,7}, //2
    {8,9,6,0,0,6}, //3
    {7,0,8,9,5,0} //4
    };

    Como haces un for each?? ya hice con el for pero tengo que hacerlo con el for each y pongo:

    for (String alumnos : alumClasse) {

    System.out.println(alumnos);

    pero no me coge el alumclasse al ser bidimensional imagino…

    Gracias!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *