una multidimensionales matriz matrices imprimir filas como columnas bordes arreglos 3x3 java formatting printf

multidimensionales - matrices en java netbeans



Java: imprime una matriz de cadenas 2D como una tabla justificada a la derecha (3)

encuentra la longitud de la cuerda más larga ...
mantén todas las cadenas con espacios hasta que tengan esa longitud + 1
System.out.print ellos usando 2 bucles anidados para

¿Cuál es la mejor manera de imprimir las celdas de una matriz String[][] como una tabla justificada a la derecha? Por ejemplo, la entrada

{ { "x", "xxx" }, { "yyy", "y" }, { "zz", "zz" } }

debe producir la salida

x xxx yyy y zz zz

Esto parece algo que uno debería ser capaz de lograr usando java.util.Formatter , pero no parece permitir anchos de campo no constantes. La mejor respuesta usará algún método estándar para rellenar las celdas de la tabla, no la inserción manual de caracteres espaciales.


Aquí hay una respuesta, usando cadenas de formato generadas dinámicamente para cada columna:

public static void printTable(String[][] table) { // Find out what the maximum number of columns is in any row int maxColumns = 0; for (int i = 0; i < table.length; i++) { maxColumns = Math.max(table[i].length, maxColumns); } // Find the maximum length of a string in each column int[] lengths = new int[maxColumns]; for (int i = 0; i < table.length; i++) { for (int j = 0; j < table[i].length; j++) { lengths[j] = Math.max(table[i][j].length(), lengths[j]); } } // Generate a format string for each column String[] formats = new String[lengths.length]; for (int i = 0; i < lengths.length; i++) { formats[i] = "%1$" + lengths[i] + "s" + (i + 1 == lengths.length ? "/n" : " "); } // Print ''em out for (int i = 0; i < table.length; i++) { for (int j = 0; j < table[i].length; j++) { System.out.printf(formats[j], table[i][j]); } } }


De hecho, si especifica un ancho para los campos, debe estar justificado a la derecha.
Si necesita un relleno dinámico, mínimo para el hilo más largo, debe recorrer el conjunto, obtener el ancho máximo, generar el formato de cadena con el ancho calculado a partir de este máximo y usarlo para formatear el resultado.