Rellenar una matriz con una cadena en Java

06/Oct/2021 Java , Deja un comentario
Programación en Java

Una de las cosas que nos habéis pedido en los comentarios es ¿cómo puedo Rellenar una matriz con una cadena en Java? Es decir, si tengo una cadena de texto en plan «Soy una cadena de texto», esta, nos sirva para rellenar a una matriz por columnas.

De esta manera, si tenemos una matriz de 3 filas, la palabra «Soy» iría en la primera columna, es decir en las posiciones (0,0), (1,0) y (2,0), el siguiente tramo de 3 caracteres sería » un», ya que hay que tener en cuenta el espacio en blanco al ser un carácter, e iría en las posiciones (0,1), (1,2) y (2,1). Así sucesivamente hasta el final de la frase.

Queda mejor explicado gráficamente de cómo quedaría la frase en la matriz de la siguiente forma:

|s   a a n d t t|
|o u   d a e e o|
|y n c e     x .|

Pues vamos a resolver el problema con Java. Lo primero sera definir la frase con la que queramos rellenar la matriz. Esto será lo más sencillo :-D

String texto = "Soy una cadena de texto.";

Ahora tendremos que definir la matriz en Java. Esto ya se complica. ¿De qué tamaño la definimos? Lo que fijaremos será el número de filas a 3. Aunque te lo puedes ajustar al número de filas que quieras. Para calcular las columnas lo que haremos será dividir el tamaño de la cadena, que nos lo da el método .length() entre 3. Y del resultado nos quedamos su número mayor, esto lo conseguimos apoyándonos en el método Math.ceil().

Así nos queda la creación de la matriz en Java:

int tamanio = texto.length();
int columnas = (int)Math.ceil((float)tamanio/3);
char[][] matriz = new char[3][columnas];

Ahora vamos a rellenar el contenido de la matriz con la cadena de texto. Para ello recorremos la matriz carácter a carácter mediante un bucle for.

for (int x=0;x<tamanio;x++) {}

Para saber la fila a la que tienes que asignar cada carácter lo que se hace es dividirlo entre 3 para saber la columna y calcular el resto de la posición entre 3 para saber la columna. Así el carácter que esté en la posición 5 estará en la celda (1,2) que será correspondiente al 5/3=1 y 5%3 = 2.

De esta forma el código nos quedará de la siguiente forma:

int columna = 0;
int fila = 0;

for (int x=0;x<tamanio;x++) {
  columna = x/3;
  fila = x%3;
  matriz[fila][columna] = texto.charAt(x);            
}

Ya solo nos quedará recorrer la matriz para ver el resultado.

for (int x=0; x < matriz.length; x++) {
    System.out.print("|");
    for (int y=0; y < matriz[x].length; y++) {
        System.out.print (matriz[x][y]);
        if (y!=matriz[x].length-1) System.out.print("\t");
    }
    System.out.println("|");
}

Y así habremos conseguido rellenar una matriz con una cadena en Java.

Vídeos sobre Java


¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.