Escolar Documentos
Profissional Documentos
Cultura Documentos
Saídas formatadas
• Há várias formas de formatar as saídas dos nossos programas, mas talvez a mais
fácil seja o uso da função (método, para usar o termo da Programação
Orientada aos Objetos) printf() da classe (outro termo fundamental da POO)
PrintStream e que é ainda mais fácil para quem já conhece uma função
semelhante da linguagem C.
2
Saídas formatadas
•System.out.printf(string);
•System.out.printf(formato, argumentos);
•
3
Saídas formatadas
•System.out.printf(string);
4
Saídas formatadas com especificadores de formato
•System.out.printf(formato, argumentos);
5
Saídas formatadas de acordo com o país
6
Saídas formatadas com especificadores de formato
•Após o símbolo %, um especificador de formato inclui flags, largura, precisão e
carateres de conversão na sequência mencionada abaixo:
•%[flags][largura][.precisão]caráter de conversão
7
Saídas formatadas com especificadores de formato
• Todos os especificadores mencionados entre colchetes são opcionais. Mais comumente, um
especificador de formato consiste no símbolo % acompanhado de um caráter de conversão.
8
Saídas formatadas de acordo com o país
• Sim, é possível, usando o parâmetro Locale e, eventualmente, a flag ',' para indicar o separador dos
milhares.
•Levam às saídas
12,300
12.300
9
Saídas formatadas de acordo com o país
• E Portugal, vem no mapa da Java? Sim, se criarmos primeiro um objeto da classe
Locale para ele:
Locale paraPortugal = new Locale("pt", "PT");
Com saída
10 000
12
Saídas formatadas com especificadores de formato
• Para formatar números em vírgula flutuante, devemos usa %f ('f' de 'floating
point').
• Exemplo:
System.out.printf("%f", 3.1423);
Produz a saída:
3.142300
13
Saídas formatadas com especificadores de formato
• Como se pode ver, o número de casas decimais por padrão é sempre de 6 casas
decimais. Mas o número pode ser formatado usando o especificador de
precisão como neste exemplo:
System.out.printf("%3.2f", 3.1423);
System.out.printf("%3.2e", 3.1423);
15
Saídas formatadas com especificadores de formato
• Quando se trata de formatar strings usando printf em Java, temos o
especificador %s.
• Geralmente, é combinado com outros especificadores dependendo dos requisitos
de formatação. Há mais coisas que se podem fazer com %s, como usar ‘%s’ para
colocar o argumento entre aspas simples ou colocar a string do argumento em
maiúscula, apenas usando ‘S’ maiúsculo em %S.
16
Saídas formatadas com especificadores de formato
• Vejamos estes exemplos:
E a saída será:
Olá Javistas!
'OLÁ JAVISTAS!'
17
Saídas formatadas com especificadores de formato
• Os especificadores opcionais que incluem largura, sinalizador e precisão também
podem ser usados para formatar a string. Para especificar um comprimento mínimo,
podemos especificar o comprimento da string usando o especificador de largura. Os
espaços em branco serão adicionados à esquerda da string se o comprimento da
string do argumento for menor que o comprimento mínimo.
System.out.printf("'%10s'", "Olá");
19
Saídas formatadas com especificadores de formato
• Para formatar uma hora usando Java Printf, são usados os caracteres H, M e S para extrair
as horas, minutos e segundos do valor de data de entrada.
• Os caracteres L e N representam o tempo em milissegundos e nanossegundos,
respetivamente. O caráter p é usado para adicionar a formatação am/pm e, por último, z
imprime o deslocamento do fuso horário.
• O tipo da variável data e hora consiste no tipo completo data e hora da classe Date. A
formatação da hora é usada para fazer imprimir a parte da hora que vem da data. Exemplo:
20
Saídas formatadas com especificadores de formato
21
Saídas formatadas com especificadores de formato
• Este é um formato simples para hora, mas se precisarmos alterar ainda mais o formato,
diferentes segmentos de tempo também podem ser extraídos separadamente usando os
caracteres mencionados anteriormente:
A saída será:
horas: 13
minutos: 51
segundos: 15
22
Saídas formatadas com especificadores de formato
• Para formatar um booleano, devemos usar %b, como no exemplo seguinte:
public static void main(String[] args) {
boolean adulto = true;
boolean membro = false;
System.out.printf(“%b%n”, adulto);
System.out.printf("%b", membro);
}
Com a saída
true
false 23
Saídas formatadas com especificadores de formato
Uso de caracteres:
A imprime o dia inteiro da semana.
d formata um dia do mês com dois dígitos.
B imprime o nome completo do mês.
m formata um mês de dois dígitos.
Y gera o ano em quatro dígitos.
y gera os dois últimos dígitos do ano. 24
Saídas formatadas com especificadores de formato
• Usando esses caracteres, esta linha de código:
25
Saídas formatadas com especificadores de formato
• E para ter sua data em formato totalmente numérico, separada por ‘-’, podemos
escrever o código assim:
System.out.printf("%1$td-%1$tm-%1$ty", data);
E a saída será:
13-11-23
26