Os programas Java sem uma interface gráfica de usuário usam a linha de comando de um computador para interagir com o usuário. É vital que a saída da linha de comando do programa seja formatada e espaçada adequadamente para que seja inteligível para o usuário. Você pode espaçar sua saída manualmente com loops ou por meio da classe Formatter do Java.
Fontes monoespaçadas
Fontes monoespaçadas são fontes nas quais cada letra ocupa o mesmo espaço que as outras letras da fonte. Por exemplo, em uma fonte monoespaçada, o caractere "i" ocupa a mesma quantidade de espaço que o caractere "m". A execução de programas Java em um ambiente com fontes monoespaçadas, como a linha de comando do Windows ou o terminal Macintosh, permite que você organize e formate seu texto em colunas organizadas, contando o número de caracteres em cada linha.
Espaçamento Manual
A maneira mais simples de espaçar adequadamente sua saída em Java é adicionando espaçamento manual. Por exemplo, para produzir três números inteiros diferentes, "i," "j" e "k", com um espaço entre cada número inteiro, use o seguinte código:
System.out.println (i + "" + j + "" + k);
Se os valores de "i", "j" e "k" forem 25, 6 e 31, respectivamente, o programa produzirá "25 6 31". A principal desvantagem desse método é a falta de consideração pelo número de caracteres em cada número inteiro. Se você imprimir três linhas de colunas com espaçamento uniforme, a segunda coluna não terá a mesma largura das duas primeiras. Se a próxima linha contivesse os valores 6, 8 e 2, as colunas ficariam totalmente desalinhadas.
Espaçamento do formatador
A classe Formatter do Java permite que você formate os dados antes de sua saída. Com o Formatador, você pode definir a largura máxima de um valor, e o Formatador então preenche automaticamente o valor com espaços vazios para garantir que seja da mesma largura. Se você produzir vários valores com as mesmas opções de formatação, poderá garantir que eles ocuparão o mesmo espaço na linha de saída. A saída de um segmento formatado de texto é simples - em vez de usar "System.out.print ()," use "System.out.format ()." O método de formatação usa duas entradas em vez da única entrada que o método de impressão usa. A primeira entrada é uma string que representa a formatação que deve ser aplicada à saída e a segunda entrada é a própria saída. Para imprimir três valores inteiros com no máximo três caracteres cada e um único espaço entre eles, use o seguinte código:
System.out.format ("% 4d", i); System.out.format ("% 3d", j); System.out.format ("% 3d", k); System.out.println ();
O "% 4" na primeira seção da string de formato indica que o programa deve usar quatro caracteres para imprimir cada inteiro. Se o inteiro tiver apenas dois caracteres, os outros dois caracteres serão espaços em branco. O "d" na string de formato indica que o valor de saída é um número inteiro decimal. A linha final do código "System.out.println ()" move o cursor para a próxima linha de código.
Espaçamento de Loop
A classe Formatting requer amplo conhecimento das strings usadas para definir o formato de saída. No entanto, você pode usar uma combinação de loops para obter espaçamentos mais complexos sem a necessidade de strings de formato complicadas. Os loops são particularmente úteis ao tentar obter um espaçamento uniforme entre várias strings. Por exemplo, você pode pegar duas matrizes de string e exibir seu conteúdo em duas colunas paralelas usando dois loops. O primeiro loop percorre ambos os arrays e encontra o comprimento da string mais longa em qualquer um dos arrays. O segundo loop percorre as matrizes novamente. Ele imprime a string do primeiro array e então subtrai o comprimento do primeiro string do comprimento do string mais longo em qualquer array para descobrir quantos espaços ele precisa colocar antes da próxima coluna. O programa então imprime esse número de espaços com o seguinte loop aninhado:
para (int i = 0; i <numSpaces; i ++) {System.out.print (""); }
Depois de imprimir o número correto de espaços, ele imprime a segunda string. Isso cria duas colunas de strings com espaçamento uniforme sem a necessidade do Formatador Java.