También se puede ver como una cuadrícula en la que los datos quedan distribuidos en filas y columnas. En el siguiente ejemplo se muestra la definición y el uso de un array de dos dimensiones.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class ArrayBi01 { public static void main(String[] args){ throws InterruptedException { // Se añade esta línea para poder usar sleep int[][] n = new int[3][2]; // array de 3 filas por 2 columnas n[0][0]=20; n[1][0]=67; n[1][1]=33; n[2][1]=7; int fila, columna; for(fila = 0; fila < 3; fila++) { System.out.print("Fila: " + fila); for(columna = 0; columna < 2; columna++) { System.out.printf("%10d ", n[fila][columna]); Thread.sleep(1000); // retardo de un segundo } System.out.println(); } } } } |
Mediante la línea int[][] n = new int[3][2] se define un array bidimensional de 3 filas por 2 columnas, pero bien podrían ser 2 filas por 3 columnas, según el objetivo y el uso que del array haga el programador. Los valores del array bidimensional se pueden proporcionar en la misma línea de la definición como se muestra en el siguiente ejemplo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | public class ArrayBi02 { public static void main(String[] args) throws InterruptedException { // Se añade esta línea para poder usar sleep int fila, columna; int[][] n = {{20, 4}, {67, 33}, {0,7}}; for(fila = 0; fila < 3; fila++) { System.out.print("Fila: " + fila); for(columna = 0; columna < 2; columna++) { System.out.printf("%10d ", n[fila][columna]); Thread.sleep(1000); // retardo de un segundo } System.out.println(); } } } |
Los arrays bidimensionales se utilizan con frecuencia para situar objetos en un plano como por ejemplo las piezas de ajedrez en un tablero, o un personaje de video-juego en un laberinto. En el siguiente programa se colocan una mina y un tesoro de forma aleatoria en un cuadrante de cuatro filas por cinco columnas. El usuario intentará averiguar dónde está el tesoro indicando las coordenadas (x, y).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | /** * Minijuego "Busca el tesoro" * * Se colocan una mina y un tesoro de forma aleatoria en un cuadrante de * cuatro filas por cinco columnas. El usuario intentará averiguar dónde * está el tesoro. * * */ public class BuscaTesoro { // se definen constantes para representar el // contenido de las celdas static final int VACIO = 0; static final int MINA = 1; static final int TESORO = 2; static final int INTENTO = 3; public static void main(String[] args) { int x; int y; int[][] cuadrante = new int[5][4]; // inicializa el array for(x = 0; x < 4; x++) { for(y = 0; y < 3; y++) { cuadrante[x][y] = VACIO; } } // coloca la mina int minaX = (int)(Math.random()*4); int minaY = (int)(Math.random()*3); cuadrante[minaX][minaY] = MINA; // coloca el tesoro int tesoroX; int tesoroY; do { tesoroX = (int)(Math.random()*4); tesoroY = (int)(Math.random()*3); } while ((minaX == tesoroX) && (minaY == tesoroY)); cuadrante[tesoroX][tesoroY] = TESORO; // juego System.out.println("¡BUSCA EL TESORO!"); boolean salir = false; String c = ""; do { // pinta el cuadrante for(y = 3; y >= 0; y--) { System.out.print(y + "|"); for(x = 0; x < 5; x++) { if (cuadrante[x][y] == INTENTO) System.out.print("X "); else System.out.print(" "); } System.out.println(); } System.out.println(" ----------\n 0 1 2 3 4\n"); // pide las coordenadas System.out.print("Coordenada x: "); x = Integer.parseInt(System.console().readLine()); System.out.print("Coordenada y: "); y = Integer.parseInt(System.console().readLine()); // mira lo que hay en las coordenadas indicadas por el usuario switch(cuadrante[x][y]) { case VACIO: cuadrante[x][y] = INTENTO; break; case MINA: System.out.println("Lo siento, has perdido."); salir = true; break; case TESORO:System.out.println("Enhorabuena, has encontrado el tesoro."); salir = true; break; default: } } while (!salir); // pinta el cuadrante for(y = 3; y >= 0; y--) { System.out.print(y + " "); for(x = 0; x < 5; x++) { switch(cuadrante[x][y]) { case VACIO: c = " "; break; case MINA: c = "* "; break; case TESORO: c = "€ "; break; case INTENTO: c = "x "; break; default: } System.out.print(c); } System.out.println(); } System.out.println(" ----------\n 0 1 2 3 4\n"); } } |
0 Comment to " Arrays bidimensionales en java"
Publicar un comentario