He estado tratando de hacer un programa que solo escriba matrices 2D con el siguiente texto a través del formato de impresión. La salida que espero supuestamente debería verse así, no importa los puntos en negrita que están destinados a la nueva línea:
Name : Florence Tel. # : 735-1234 Address: Chicago * Name : Joyce Tel. # : 983-3333 Address: Evanston * Name : Becca Tel. # : 456-3322 Address: Oak ParkEste es mi código hasta ahora:
public static void main(String[] args) { String[][] entry = { {"Florence", "735-1234", "Chicago"}, {"Joyce", "983-3333", "Evanston"}, {"Becca", "456-3322", "Oak Park"}}; for (int i = 0; i < entry.length; i++) { for (int q = 0; q < entry[i].length; q++) { System.out.printf("\n%s\n%s\n%s", "Name : " + entry[i][q], "Tel. # : " + entry[i][q], "Address: " + entry[i][q]); } System.out.println(); } }Pero mi salida solo muestra esto:
* Name : Florence Tel. # : Florence Address: Florence Name : 735-1234 Tel. # : 735-1234 Address: 735-1234 Name : Chicago Tel. # : Chicago Address: Chicago * Name : Joyce Tel. # : Joyce Address: Joyce Name : 983-3333 Tel. # : 983-3333 Address: 983-3333 Name : Evanston Tel. # : Evanston Address: Evanston * Name : Becca Tel. # : Becca Address: Becca Name : 456-3322 Tel. # : 456-3322 Address: 456-3322 Name : Oak Park Tel. # : Oak Park Address: Oak ParkCualquier sugerencia o consejo será muy apreciado.
aunque la mayor parte del código que ha escrito es correcto, simplemente no necesita el segundo bucle for. A continuación se muestra por qué
cuando q=0, su código se está imprimiendo
Nombre = entrada[0][0]
tel. #= entrada[0][0]
Dirección = entrada[0][0]
cuando q = 1, su código se está imprimiendo
Nombre = entrada[0][1]
tel. #= entrada[0][1]
Dirección = entrada[0][1]
cuando q = 2, su código se está imprimiendo
Nombre = entrada[0][2]
tel. #= entrada[0][2]
Dirección = entrada[0][2]
Creo que aquí tienes una buena idea de lo que sucede a continuación. El proceso anterior continúa hasta i<3 y q<3.
Puede evitar este tipo de impresión simplemente excluyendo el segundo bucle for en su código y agregando algo como a continuación
for ( int i= 0; i < entry.length; i++){ System.out.printf("\n%s\n%s\n%s", "Name : " + entry[i][0], "Tel. # : " +entry[i][1], "Address: " + entry[i][2]); System.out.println(); } cuando se ejecuta el fragmento de código anterior, puede ver el resultado esperado como se mencionó anteriormente.
cuando i=0, tu código se está imprimiendo
Nombre = entrada[0][0]
tel. #= entrada[0][1]
Dirección = entrada[0][2]
Los próximos 2 pasos que puedes seguir, supongo.
Espero que esto sea útil.
La forma más fácil de hacer esto sería usar Arrays.deepToString(entry) .
Sin embargo, eso tiene el costo de que no puede especificar nada entre los elementos de la matriz. Si su prioridad es mostrar el Texto adicional, sugiero la otra respuesta ya presente. Si su prioridad es una solución que funcione bien, comprensible y rápida de codificar, entonces mi sugerencia funciona mejor.