Curso de Java. Matrices multidimensionales.
Una matriz multidimensional en java, es realmente una matriz unidimensional cuyos lementos referencian cada uno a una o varias matrices unidimensionales más.
Declarar y asignar el tamaño a una matriz multidimensional.
Para crear una Matriz multidimensional se hace por ejemplo de la siguiente manera:
Con esta sentencia hemos creado una matriz multidimensional de dos dimensiones. El primer corchete [ 2 ], indica el número de matrices de una sola dimensión o unidimensionales que hay, por tanto su tipo de dato es int [ ] . En este caso hay 2 matrices unidimensionales.
El segundo corchete [ 3 ], indica el número de elementos que tiene cada una de las dos matrices unidimensionales anteriores y su tipo de dato es int . Los índices de esta matriz creada quedarían de la siguiente manera:
Aunque quizás se entiende mejor el concepto de matriz multidimensional, si lo vemos en forma de filas y columnas:
Asignar valores a los elementos de una matriz multidimensional.
Para asignar valores a una matriz multidimensional se actúa de la misma manera que en las matrices unidimensionales, salvo que ahora serán varios los índices que intervengan. Una vez que tenemos la matriz creada, por ejemplo la matriz «notas», actuaremos de la siguiente manera para acceder a los elementos:
notas [ 0 ] [ 0 ] = 10 ;
notas [ 1 ] [ 2 ] = 9 ;
La primera sentencia asigna el valor «10» al elemento de la matriz unidimensional (col0) con índice «0», que esta referenciado por la matriz (fila-0).
la segunda sentencia hace lo propio asignando el valor «9» al elemento situado en la matriz unidimensional (col2) , referenciado por la matriz (fila-1).
Java inicializa por defecto los elementos vacios de una matriz a «0» ó, a «null» si es una matriz de objetos.
Recorrer los elementos de una matriz para asignar valores o ver su contenido.
Al igual que con las matrices simples o unidimensionales, también podemos emplear bucles for para asignar o ver los datos de una matriz multidimensional:
Asignar datos a una matriz multidimensional:
int lim_1 = notas[ 1 ].length ;
1 2 3 4 5 | for ( int k = 0; k < lim_0 ; k++ ) { for( int l = 0 ; l < lim_1 ; l++ ){ notas [ k ][ l ] = EntDatos.entero( ); } } |
Ver datos de una matriz multidimensional:
int lim_1 = notas[ 1 ].length ;
1 2 3 4 5 | for ( int k = 0 ; k < lim_0 ; k++ ) { for( int l = 0 ; l <lim_1 ; l++ ){ System.out.println ( notas [ k ] [ l ] ) ; } } |
Como veis hemos declarado dos variables lim_0 y lim_1, para saber el tamaño de cada matriz unidimensional y establecer límites a los bucles. las variables «k» y «l» representan las filas y las columnas de la matriz bidimensional. Para asignar datos a la matriz hemos utilizado la clase EntDatos y su método entero( ) para introducir números enteros por teclado. Esta clase debe de estar en el mismo paquete, donde utilicemos la llamada a la misma, o en su defecto (no aconsejable) en la clase donde se situe el programa principal (contiene el método main( )) desde donde efectuemos la llamada al método de la clase EntDatos.
Matrices tridimensionales.
Hasta ahora en esta página nos hemos centrado en trabajar con una matriz de dos dimensiones o bidimensional, compuesta de una dimensión filas ( eje y) y una dimensión columnas ( eje x). Para crear una matriz tridimensional hay que añadir un eje más (eje Z) a la síntexis de la tabla o matriz:
La tabla podría representarse con el siguiente dibujo, donde podemos ver los índices que tendrían cada elemento de la misma:
Para asignar valores a este tipo de matriz, por ejemplo pondriamos:
cubo [ 2 ][ 2 ][ 0 ] = 20;
cubo [ 1 ][ 2 ][ 2 ] = 5 ;
podemos utilizar también bucles anidados for para asignar y ver los valores de la matriz tridimensional después:
Asignar datos a una matriz tridimensional:
int lim_1 = cubo[ 1 ].length ;
int lim_2 = cubo[ 2 ].length ;
1 2 3 4 5 6 7 | for ( int y = 0; y < lim_0 ; y++ ) { for( int x = 0 ; x <lim_1 ; x++ ){ for ( int z = 0 ;z < lim_2 ; z++ ){ notas[y][x][z] = EntDatos.entero( ); } } } |
Ver los datos de una matriz tridimensional:
int lim_1 = cubo[ 1 ].length ;
int lim_2 = cubo[ 2 ].length ;
1 2 3 4 5 6 7 8 | for ( int y = 0 ; y < lim_0 ; y++ ){ for( int x = 0 ; x < lim_1 ; x++ ){ for ( int z = 0 ; z < lim_2 ; z++ ){ System.out.println(cubo[y][x][z]); } } } |
Bueno aquí finaliza la 1ª Parte del curso de Java. Hasta el momento solo hemos visto las principales herramientas ó elementos que dispone Java en su lenguaje, pero Ya dijimos que Java es un lenguaje orientado al Objeto, así que nos queda por ver lo principal del lenguaje. La 2ª Parte del curso se ocupa de ello. De momento esta en creación, ya que mi sitio es relativamente nuevo y el proceso de creación de Páginas web lleva su tiempo, más tratandose de un curso completo. Por tanto os pido que me disculpeis y os invito a ir visualizando el progreso de creación de la 2ª parte, si es que os ha gustado esta 1ª y la habeis sacado algo de provecho. En cualquier caso os dejo esta enlace donde iré posteando ejercicios progresivos y que irán abarcando distintos aspectos de la programación en Java.