Espaciado de salida en Java

Los programas Java sin una interfaz gráfica de usuario utilizan la línea de comandos de una computadora para interactuar con el usuario. Es vital que la salida de la línea de comandos del programa esté formateada y espaciada correctamente para que sea inteligible para el usuario. Puede espaciar su salida manualmente con bucles o mediante la clase Formatter de Java.

Fuentes monoespaciadas

Las fuentes monoespaciadas son fuentes en las que cada letra ocupa la misma cantidad de espacio que las demás letras de la fuente. Por ejemplo, en una fuente monoespaciada, el carácter "i" ocupa la misma cantidad de espacio que el carácter "m". La ejecución de programas Java en un entorno con fuentes monoespaciadas, como la línea de comandos de Windows o la terminal de Macintosh, le permite organizar y formatear su texto en columnas ordenadas contando el número de caracteres en cada fila.

Espaciado manual

La forma más sencilla de espaciar correctamente su salida en Java es agregando espaciado manual. Por ejemplo, para generar tres números enteros diferentes, "i", "j" y "k", con un espacio entre cada número entero, utilice el siguiente código:

System.out.println (i + "" + j + "" + k);

Si los valores de "i", "j" y "k" son 25, 6 y 31, respectivamente, el programa genera "25 6 31". El principal inconveniente de este método es la falta de consideración por el número de caracteres en cada entero. Si imprime tres filas de columnas espaciadas uniformemente, la segunda columna no tendrá el mismo ancho que las dos primeras. Si la siguiente fila tuviera los valores 6, 8 y 2, las columnas estarían completamente desalineadas.

Espaciado del formateador

La clase Formatter de Java le permite formatear los datos antes de que se generen. Con el formateador, puede definir el ancho máximo de un valor, y el formateador rellena automáticamente el valor con espacios vacíos para asegurarse de que tenga el mismo ancho. Si genera varios valores con las mismas opciones de formato, puede asegurarse de que ocupen el mismo espacio en la línea de salida. La salida de un segmento de texto formateado es simple, en lugar de usar "System.out.print ()", use "System.out.format ()". El método de formato toma dos entradas en lugar de la única entrada que utiliza el método de impresión. La primera entrada es una cadena que representa el formato que se debe aplicar a la salida y la segunda entrada es la salida en sí. Para imprimir tres valores enteros con un máximo de tres caracteres en cada uno y un solo espacio entre ellos, use el siguiente código:

System.out.format ("% 4d", i); System.out.format ("% 3d", j); System.out.format ("% 3d", k); System.out.println ();

El "% 4" en la primera sección de la cadena de formato indica que el programa debe usar cuatro caracteres para imprimir cada entero. Si el número entero tiene solo dos caracteres, los otros dos caracteres serán espacios en blanco. La "d" en la cadena de formato indica que el valor de salida es un entero decimal. La última línea de código "System.out.println ()" mueve el cursor a la siguiente línea de código.

Espaciado de bucle

La clase de formato requiere un amplio conocimiento de las cadenas utilizadas para definir el formato de salida. Sin embargo, puede usar una combinación de bucles para lograr un espaciado más complejo sin la necesidad de cadenas de formato complicadas. Los bucles son particularmente útiles cuando se intenta lograr un espaciado uniforme entre varias cadenas. Por ejemplo, puede tomar dos matrices de cadenas y mostrar su contenido en dos columnas paralelas utilizando dos bucles. El primer ciclo pasa por ambas matrices y encuentra la longitud de la cadena más larga en cualquiera de las matrices. El segundo ciclo se ejecuta de nuevo a través de las matrices. Imprime la cadena de la primera matriz y luego resta la longitud de la primera cadena de la longitud de la cadena más larga en cualquier matriz para averiguar cuántos espacios necesita colocar antes de la siguiente columna. Luego, el programa imprime esa cantidad de espacios con el siguiente bucle anidado:

for (int i = 0; i <numSpaces; i ++) {System.out.print (""); }

Después de imprimir el número correcto de espacios, imprime la segunda cadena. Esto crea dos columnas de cadenas espaciadas uniformemente sin la necesidad del formateador de Java.