Cursos: Análise, Ciência da Computação e Sistemas de Informação
Laboratório I - Prof. Aníbal
Saída formatada em Java com printf
SAÍDA FORMATADA EM JAVA COM printf
(Esta matéria não será exigida em avaliações)
Usando o método printf em lugar de print ou println, no fluxo de saída padrão System.out,
obtém-se uma saída formatada. Apresentamos um resumo dos principais recursos deste método. A
sintaxe geral é
printf (string de formato, lista de dados de saída)
O string de formato descreve o formato para cada um dos dados da lista de dados de saída. Na lista de
dados de saída os vários dados são separados por vírgula.
Ex: System.out.printf("%s%d\n%10.2f", "Blablu ", 1234, 12345.678);
O string de formato é todo o string que vem antes da primeira vírgula. O primeiro formato, "%s", indica
que o primeiro dado a ser impresso deve ser do tipo String ("Blablu "); o segundo formato, "%d",
serve para formatar um valor inteiro (1234); a seguir, vem um salto de linha, "\n", e o terceiro formato,
"%10.2f", que irá exibir o terceiro dado de saída, que deve ser um número de ponto flutuante, o qual
será impresso ajustado à direita dentro de um campo de 10 espaços de largura, sendo duas casas
decimais (12345.678). Veja abaixo o resultado exibido:
Blablu 1234
12345,68
Os formatos dos dados de saída em geral são precedidos de "%".
acompanhados de exemplos e rápidos comentários.
d
o
X
x
Apresentamos os principais,
Formatos inteiros
exibe inteiro decimal (base 10)
exibe inteiro octal (base 8)
exibe inteiro hexadecimal (base 16) com letras maiúsculas
exibe inteiro hexadecimal (base 16) com letras minúsculas
Ex:
System.out.printf("%d\t%o\t%X\t%x\n", 180, 180, 180, 180);
Saída: 180
264
B4
b4
•
Lembrando que o "\t" serve para tabulação padrão e "\n" para o salto de linha (caracteres
de escape), o valor inteiro 180 é exibido em decimal, octal e duas vezes em hexadecimal,
espaçados por tabulação padrão
Formato para strings
s
eixbe um string
Ex:
System.out.printf("%s%d\n", "Quadrado de 5: ", (int)Math.pow(5,2));
Saída: Quadrado de 5: 25
•
f
E
e
Aqui temos um formato string seguido de um inteiro. E salta para nova linha após imprimir.
Formatos para números de ponto flutuante
exibe no formato decimal
exibe no formato exponencial, letra maiúscula
exibe no formato exponencial, letra minúscula
Laboratório I - Prof. Aníbal – Saída formatada em Java com printf
1
Ex:
System.out.printf("%f\t%E\t%e\n", 12345.6, 12345.6, 12345.6);
Saida: 12345,600000
1.234560E+04
1.234560e+04
•
•
•
A vírgula (notação brasileira para separar as casas decimais) é usada no formato "f"
4
Na notação exponencial, E+04 ou e+04 significa multiplicação por 10
O padrão dos códigos "f", "e" e "E" é de seis dígitos decimais. Veremos, a seguir, como
especificar quantidade diferente de casas decimais
Usando largura e precisão de campos
Especifica-se a largura do campo onde um dado será exibido escrevendo-se este tamanho entre o "%" e
o código de formato.
Ex:
System.out.printf("%3d\n%3d\n%3d\n", 1, -12, 1234);
Saida:
1
-12
1234
•
•
•
Como padrão, o valor é ajustado à direita dentro do campo
Se o campo é insuficiente para conter o valor, ele é expandido para a direita
O sinal, quando impresso, consome uma posição do campo
Ex:
System.out.printf("%10.3f\n%10.3f\n", -123.45678, 54321.5);
Saida:
-123,457
54321,500
•
"%10.3f" indica que um número de ponto flutuante será impresso, ajustado à direita, dentro
de um campo de tamanho 10, tendo 3 casas decimais
Ex:
System.out.printf("%7.2f%15.3f\n%7.2f%15.3f\n",23.5,-120.,6743.42,5.);
Saida:
23,50
-120,000
6743,42
5,000
•
•
+
0
,
(
O uso da largura de campo é muito útil para dispor dados em colunas verticais
O código de formato "f" exige que o dado seja de ponto flutuante. Os valores inteiros 120 e
5 tiveram de ser expressos com ponto decimal, caso contrário ocorreria uma exception
Alguns códigos adicionais para a formatação da saída
(sinal de subtração) - alinha à esquerda dentro do campo
coloca sinal em todos os valores numéricos
(zero) - preenche o campo com zeros à esquerda
(vírgula) – usa o separador específico de localidade de milhares (ponto, na notação brasileira,
vírgula, na notação dos EUA)
coloca números negativos entre parênteses
Ex:
System.out.printf("%5d\n%+5d\n%-5d\n", 12, 12, 12);
Saida:
12
+12
12
•
•
•
O valor 12 é exibido em três linhas, dentro de um campo de 5 posições
Veja o efeito do segundo código "%+5d", colocando sinal num valor positivo
Repare que o valor da terceira linha ficou alinhado à esquerda dentro do campo de 5
posições, efeito do código de formatação "-" (sinal de subtração)
Laboratório I - Prof. Aníbal – Saída formatada em Java com printf
2
Ex:
System.out.printf
Saida: 00012
12
(12)
•
•
("%05d\n%(5d\n%(5d\n", 12, 12, -12);
Este exemplo mostra o efeito do código "0" (zero) na primeira linha e do código "(" nas
duas linhas seguintes
A exibição de número negativo entre parênteses é uma notação usada em Contabilidade
Ex:
System.out.printf("%,d\t%s%,.2f\n", 12345, "R$ ", 12345.678);
Saida: 12.345 R$ 12.345,68
•
•
•
O código ","(vírgula) permite utilizar o ponto para a separação das casas de milhares, que é
a notação usada no Brasil (repare que o primeiro valor é doze mil, trezentos e quarenta e
cinco, um inteiro)
O segundo valor é doze mil, trezentos e quarenta e cinco Reais e sessenta e oito centavos
Outra maneira de exibir o mesmo resultado é
System.out.printf("%,d\tR$ %,.2f\n", 12345, 12345.678);
Ex:
System.out.printf("%,15.2f\n%,15.2f\n", 123456789.1, -123456.);
Saida: 123.456.789,10
-123.456,00
•
Este exemplo combina alguns recursos para exibir valores numa coluna de 15 espaços de
largura, usando a notação brasileira
Alguns exemplos de erros
Ex:
System.out.printf("%f%d", 12, 34);
Saída: IllegalFormatConversionException
•
Tentativa de exibir um dado de saída de tipo diferente do especificado pelo código de
formato.
Ex:
System.out.printf("%d%d%d", 12, 34);
Saída: MissingFormatArgumentException
•
Apenas 2 dados na lista de saída para 3 formatos
Outros formatos
Existem diversos outros códigos e recursos de formatação vinculados ao método printf que fogem
aos objetivos deste resumo. Podem ser estudados na fonte abaixo citada ou na API Java.
Fonte bibliográfica
Deitel, H. M.; Deitel, P.J. Java: como programar. São Paulo, Pearson, 2007.
Laboratório I - Prof. Aníbal – Saída formatada em Java com printf
3
Download

Prof. Aníbal Saída formatada em Java