Arrays bidimensionales en java

Un array bidimensional utiliza dos índices para localizar cada elemento. Podemos ver este tipo de dato como un array que, a su vez, contiene otros arrays.

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");
}
}

Compartir

0 Comment to " Arrays bidimensionales en java"

Publicar un comentario