Printf() e format()

2 respostas
anderson.bonavides

Acho que todo mundo já teve essa dúvida aki lendo o livro em português, mas lendo a primeira vez tirei a dúvida ou não tirei direito, bem o fato é que não to entendendo um pequeno detalhe.

A dúvida é o seguinte, gostária de saber pq a saída ele guarda 3 casas antes do ponto e não 4 ou 2 ou até mesmo uma. O fato de completar com zero já compreendi, mas deve ter um motivo bem obvio que não to conseguindo enchergar. Peço desculpas pela dúvida tão boba que deve ser mas desde já agradeço a todos que ajudam de bom coração e não falam bobagem com alguma dúvida boba.

public class printf { 
	public static void main(String[] args){
		int i1 = -123;
		int i2 = 12345;
		System.out.printf(">%1$(7d< \n", i1); //entendido.

		System.out.printf(">%0,7d< \n", 12345); //não entendido completamente

		System.out.printf(">%+-7d< \n", i2); //entendido
		System.out.printf(">%2$b + %1$5d< \n", i1, false);//entendido
		
	}	
}

Saída:
> (123)<
>012.345<
>+12345 <
>false + -123<

2 Respostas

T

Lendo o javadoc da classe java.util.Formatter:

Ou seja, a vírgula é uma opção para imprimir os separadores de milhar.

Isto deve imprimir "012.345" se você estiver usando o Windows em português, ou "012,345" no Windows em inglês.

System.out.printf("&gt;%0,7d&lt; \n", 12345);

Note que “7” é o número de posições, incluindo os pontos ou vírgulas.

Para você entender melhor, o número [telefone removido] seria impresso como "1.234.567.890" pelo mesmo formato ("%0,7d").

Para imprimir com 10 casas, sendo 7 depois da vírgula, use o ponto:

System.out.printf ("&gt;%010.7f&lt;%n", 12.345);

Use "%n" em vez de "\n" porque "\n" só funciona direito no Unix (no Windows você teria de usar "\r\n"). Usando "%n", você tem o comportamento correto em todos os sistemas operacionais ("\n" no Unix, "\r\n" no Windows).

anderson.bonavides

Ok thingol, mas no livro da Kathy ela utiliza no printf “\n” e não %n. Mas já entendi seu recado. O importante é utlizar algum independente de plataforma.
=]
Vlw pela força!

Criado 20 de dezembro de 2007
Ultima resposta 20 de dez. de 2007
Respostas 2
Participantes 2