Java - Ayuda con Array bidimensional

 
Vista:

Ayuda con Array bidimensional

Publicado por IRENE (7 intervenciones) el 03/10/2021 12:12:46
Hola tengo que crear esta imagen:
bidi

No consigo centrar los elementos , este es mi código:
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
// creamos el objeto Scanner llamdo teclado
		Scanner teclado=new Scanner(System.in);
		String dia1 = "", dia2= "", nom1= "", nom2= "", nom3= "", nom4= "";
		// ENTRADA DE DATOS
		// pedimos al usuario 1 dia de la semana
		System.out.println("Introduzca día de la semana: ");
		// guardamos en el array bidimendional
		dia1=teclado.nextLine();
		// pedimos 1º nombre lo guardamos
		System.out.println("Introduzca nombre: ");
		nom1=teclado.nextLine();
		// pedimos segundo nombre y lo guardamos
		System.out.println("Introduzca otro nombre: ");
		nom2=teclado.nextLine();
		//------fin de la 1º buelta----------------
 
		//volvemos a pedir los mismos datos
		System.out.println("Repetimos ");
		System.out.println("Introduzca día de la semana: ");
		// guardamos en el array bidimendional
		dia2=teclado.nextLine();
		System.out.println("Introduzca nombre: ");
		nom3=teclado.nextLine();
		System.out.println("Introduzca otro nombre: ");
		nom4=teclado.nextLine();
		// creamos el array bidimensioal con las entradas del usuario
		String bidim[][]= {
				{"| ", dia1, "||  ", dia2, "   |"},//00, 01 02 03 04
				{"| ", nom1, "||  ", nom3, "   |"},//10 11 12 13 14
				{"| ", nom2, "||  ", nom4, "   |"} //20 21 22 23 24
				};
 
		// SALIDA DE DATOS
		// la 1º linea con rayas
		System.out.println("----------------------");
		//la segunad línea
		System.out.println(bidim[0][0]+bidim[0][1]+bidim[0][2]+bidim[0][3]+bidim[0][4]);
		//tercera lína con rayas
		System.out.println("----------------------");
		//cuarta línea
		System.out.println(bidim[1][0]+bidim[1][1]+bidim[1][2]+bidim[1][3]+bidim[1][4]);
		// quinta línea
		System.out.println(bidim[2][0]+bidim[2][1]+bidim[2][2]+bidim[2][3]+bidim[2][4]);
		// la última lína con rayas.
		System.out.println("----------------------");
	}
}

y esto es lo que me sale no consigo que quede centrado como en la imagen de arriba
ayuda, muchas gracias de antemano

resultado
YA LO HE CONSEGUIDO, jaja con el tabulador " \t "
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con Array bidimensional

Publicado por IRENE (7 intervenciones) el 03/10/2021 13:18:11
Nada, con la tabulación tampoco soy capar de centrar el contenido

alguna idea??
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con Array bidimensional

Publicado por Kabuto (1082 intervenciones) el 03/10/2021 18:43:04
Hola Irene

Centrar textos en el modo consola es poco menos que imposible.
Pero bueno, se puede conseguir algún resultado aceptable si usamos el comando printf() para dar formato al texto.

Observa las líneas que marco en negrita:
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
public static void main(String[] args) {
		Scanner teclado=new Scanner(System.in);
		String dia1 = "", dia2= "", nom1= "", nom2= "", nom3= "", nom4= "";
		// ENTRADA DE DATOS
		// pedimos al usuario 1 dia de la semana
		System.out.println("Introduzca día de la semana: ");
		// guardamos en el array bidimendional
		dia1=teclado.nextLine();
		// pedimos 1º nombre lo guardamos
		System.out.println("Introduzca nombre: ");
		nom1=teclado.nextLine();
		// pedimos segundo nombre y lo guardamos
		System.out.println("Introduzca otro nombre: ");
		nom2=teclado.nextLine();
		//------fin de la 1º buelta----------------
 
		//volvemos a pedir los mismos datos
		System.out.println("Repetimos ");
		System.out.println("Introduzca día de la semana: ");
		// guardamos en el array bidimendional
		dia2=teclado.nextLine();
		System.out.println("Introduzca nombre: ");
		nom3=teclado.nextLine();
		System.out.println("Introduzca otro nombre: ");
		nom4=teclado.nextLine();
		// creamos el array bidimensioal con las entradas del usuario
		String bidim[][]= {
				{"| ", dia1, "||  ", dia2, "   |"},//00, 01 02 03 04
				{"| ", nom1, "||  ", nom3, "   |"},//10 11 12 13 14
				{"| ", nom2, "||  ", nom4, "   |"} //20 21 22 23 24
		};
 
		// SALIDA DE DATOS
		// la 1º linea con rayas
		System.out.println("------------------------------");
		//la segunda línea
		System.out.printf("%s%-10s%s%-10s%s\n",bidim[0][0],bidim[0][1],bidim[0][2],bidim[0][3],bidim[0][4]);
		//tercera lína con rayas
		System.out.println("------------------------------");
		//cuarta línea
		System.out.printf("%s%-10s%s%-10s%s\n",bidim[1][0],bidim[1][1],bidim[1][2],bidim[1][3],bidim[1][4]);
		// quinta línea
		System.out.printf("%s%-10s%s%-10s%s\n",bidim[2][0],bidim[2][1],bidim[2][2],bidim[2][3],bidim[2][4]);
		// la última línea con rayas.
		System.out.println("------------------------------");
		teclado.close();
	}
 
}

Esto nos daría este resultado en pantalla:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Introduzca día de la semana:
Lunes
Introduzca nombre:
Sara
Introduzca otro nombre:
Pedro
Repetimos
Introduzca día de la semana:
Miercoles
Introduzca nombre:
Luis
Introduzca otro nombre:
MariCarmen
------------------------------
| Lunes     ||  Miercoles    |
------------------------------
| Sara      ||  Luis         |
| Pedro     ||  MariCarmen   |
------------------------------


Que ya es algo aceptablemente similar a los que buscabas.

Y claro, te preguntarás qué hacen estos símbolos raros:
1
System.out.printf("%s%-10s%s%-10s%s\n",bidim[0][0],bidim[0][1],bidim[0][2],bidim[0][3],bidim[0][4]);
Bién, hay lo que le estoy pidiendo a printf() es que me construya una cadena con una serie de Strings que le voy a proporcionar.
Y le pido que algunos de ellos SIEMPRE ocupen 10 caracteres. Así conseguimos que los nombres de los días y de las personas tengan el mismo ancho, sin importar cuantas letras componen sus nombres.
Si tienen menos de 10 caracteres, printf() pondrá espacios en blanco automáticamente para rellenar los caracteres que faltan para llegar a 10.

De esta manera, se puede mantener un formato igualado para cualquier texto.
Bueno, no cualquiera, si se introduce un nombre que supere los 10 caracteres, por ejemplo Maria del Carmen, pues el formato se estropeará.
Si queremos, en lugar de 10 caracteres, podemos decirle que los nombres ocupen 15, 20, 25... para dejar espacio para nombres muy grandes.
Pero entonces el recuadro puede quedar demasiado grande, con mucho espacio en blanco sin aprovechar.

Explicándolo un poco más a fondo, cada símbolo % es un "carácter comodín". Indica que ahí se ha de insertar una de las variables que vienen a continuación separadas con comas.
Si acompañamos el comodín con una s --> %s , le estamos diciendo que ahí va un String.
Si pusiéramos una d --> %d, le estamos diciendo que ahí va un entero natural del sistema decimal (un int)
Cuando lleva una f --> %f, entonces va un valor real (un float, o un double)


Cuando le digo esto --> %-10s
Significa que ha de colocar un String de 10 caracteres. Y el símbolo negativo especifica que ha de alinearlo a la izquierda.
Es decir, escribirá:

1
2
| Sara      ||
| Pedro     ||

Si no ponemos el símbolo negativo, por defecto lo alinea a la derecha, lo cuál es apropiado para cifras, pero quizás no tanto para nombres:

1
2
|       Sara||
|      Pedro||



En fin, la sintaxis del printf() es muy extensa. Hay montones de enlaces como este donde explican con ejemplos y conviene guardarlos para futuras referencias, porque memorizarlo todo es una locura je je..

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda con Array bidimensional

Publicado por IRENE (7 intervenciones) el 03/10/2021 19:40:44
Genial ¡¡¡¡ muchas gracias es justo lo que necesitaba, una explicación suprema, muchísimas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar