Foros del Web » Programación para mayores de 30 ;) » Java »

Alinear una matriz

Estas en el tema de Alinear una matriz en el foro de Java en Foros del Web. Hola! bueno, en mi clase de programación (específicamente en este semestre estamos viendo estructura de datos) y me encargaron resolver un laberinto, el laberinto es ...
  #1 (permalink)  
Antiguo 27/03/2011, 13:40
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
Alinear una matriz

Hola! bueno, en mi clase de programación (específicamente en este semestre estamos viendo estructura de datos) y me encargaron resolver un laberinto, el laberinto es un arreglo bidimensional de String donde las "x" es donde no hay camino y el camino está representado por un espacio vacío, mi entrada es un 0 y por donde pueda avanzar va a ir poniendo un 1 y despues un 2 y así sucesivamente hasta llegar a mi salida que está representada por una "b". Todo está resuelto, pero como al principio imprimo la matriz sin resolver y al final ya resuelta, la resuelta se ve toda desalineada :S porque hay posiciones en la matriz donde hay numeros de dos cifras y se alargando la fila

Mi pregunta es la siguiente:
¿Hay alguna forma de forzar a la matriz a que se alinee así como en una tipo cuadricula?
  #2 (permalink)  
Antiguo 27/03/2011, 14:03
Avatar de Crackoder  
Fecha de Ingreso: marzo-2011
Ubicación: Venezuela
Mensajes: 7
Antigüedad: 13 años, 1 mes
Puntos: 3
Respuesta: Alinear una matriz

Supongo que la matriz la matriz la estas imprimiendo en consola, y si es asi, no hay un metodo para alinearlos automaticamente.

Pero podrias obligar a que los datos estuvieran mejor acomodados si haces un metodo que rellene con espacios en blanco las cadenas mas pequeñas al momento de imprimirlas indicandole tu un tamaño minimo

Ejemplo:
Código Java:
Ver original
  1. public String agregarEspacios(String cadena, int longitud){
  2.      int diferencia = longitud - cadena;
  3.      for(int i =0;i<diferencia;i++){
  4.          cadena = " "+cadena;
  5.      }
  6.      return cadena;
  7. }

si por ejemplo le envio la cadena "x" y como longitud 3 el metodo me devolvera " x" (con 2 espacios delante) y cuando imprimas este no desalineara la cuadricula amenos que halla un numero cuya longitud sea mayor a 3 (en este caso), lo que debes hacer es primero buscar cual es la cadena mas larga y usar su longitud para alinear las demas.

Espero haberte ayudado,
Saludos... :)
  #3 (permalink)  
Antiguo 27/03/2011, 15:42
 
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Alinear una matriz

Cita:
Iniciado por Crackoder Ver Mensaje
Supongo que la matriz la matriz la estas imprimiendo en consola, y si es asi, no hay un metodo para alinearlos automaticamente.

Pero podrias obligar a que los datos estuvieran mejor acomodados si haces un metodo que rellene con espacios en blanco las cadenas mas pequeñas al momento de imprimirlas indicandole tu un tamaño minimo

Ejemplo:
Código Java:
Ver original
  1. public String agregarEspacios(String cadena, int longitud){
  2.      int diferencia = longitud - cadena;
  3.      for(int i =0;i<diferencia;i++){
  4.          cadena = " "+cadena;
  5.      }
  6.      return cadena;
  7. }



si por ejemplo le envio la cadena "x" y como longitud 3 el metodo me devolvera " x" (con 2 espacios delante) y cuando imprimas este no desalineara la cuadricula amenos que halla un numero cuya longitud sea mayor a 3 (en este caso), lo que debes hacer es primero buscar cual es la cadena mas larga y usar su longitud para alinear las demas.

Espero haberte ayudado,
Saludos... :)

Hola Crackoder, muchas gracias por tomarte el tiempo de ayudarme pero afortunadamente ya lo pude resolver :D ... para serte sincero no entendí del todo tu idea, pero creo que es parecida.
Así lo solucioné:
Código Java:
Ver original
  1. for (String[] x : lab) {
  2.             System.out.print("\t");
  3.             for (String y : x) {
  4.                 if (y.length() == 1) {
  5.                     System.out.print(y + "  ");
  6.                 } else {
  7.                     System.out.print(y + " ");
  8.                 }
  9.             }
  10.             System.out.println();
  11.         }
  #4 (permalink)  
Antiguo 27/03/2011, 16:06
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Alinear una matriz

Hola,

Código Java:
Ver original
  1. System.out.printf("%-4s ", data);

Saludos,

Etiquetas: alinear, matriz
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:42.