String.format & System.out.printf

 

%[arg_index$][flags][width][.precision]conversion char

 
 

“%2$d + %1$d

 

  • arg_index An integer followed directly by a $, this indicates which argument should be printed in this position.

     
     

  • flags While many flags are available, for the exam you’ll need to know:

“-“

Left justify this argument

“+”

Include a sign (+ or -) with this argument

“0”

Pad this argument with zeroes

“,”

Use locale-specific grouping separators (i.e., the comma in 123,456)

“(“

Enclose negative numbers in parentheses

  • width This value indicates the minimum number of characters to print. (If you want nice even columns, you’ll use this value extensively.)
  • precision For the exam you’ll only need this when formatting a floating-point number, and in the case of floating point numbers, precision indicates the number of digits to print after the decimal point.
  • conversion The type of argument you’ll be formatting. You’ll need to know:

b

boolean

c

char

d

integer

f

floating point

s

string

 
 

Let’s see some of these formatting strings in action:

 
 

int i1 = -123;

int i2 = 12345;

 
 

Mapa

Código:

Output:

Original 1

System.out.printf(“>%1$(7d< \n”, i1);

> (123)<

Análise original 1

1$ – peque o primeiro argumento

( – envolva o número com parenteses caso for negativo

7 – largura mínima do argumento 1$

d – tipo integer

 
 

“>%1$(7d< \n”

  

Copia 1

System.out.printf(“>%1$(10d< \n”, i1);

> (123)<

Original 2

System.out.printf(“>%0,7d< \n”, i2);

>012.345<

Análise original 2

0 – incluir o zero

, – usar um separador de acordo com o locale.

7 – largura mínima geral (repare que não há especificação de nenum argumento 1$, 2$ …)

d – tipo integer

 
 

“>%0,7d< \n”

  

Copia 2

System.out.printf(“>%0,10d< \n”, i2);

>000012.345<

Original 3

System.out.format(“>%+-7d< \n”, i2);

>+12345 <

Análise original 3

+ – incluir o símbolo (+ / -)

– – justificar a esquerda

7 – largura mínima geral

d – tipo integer

 
 

“>%+-7d< \n”

  

Original 4

System.out.printf(“>%2$b + %1$5d< \n”, i1, false);

>false + -123<

Análise original 4

%2$ – seguindo argumento

b – tipo boolean

+ – concatenação

%$1 – primeiro argumento

5 – largura do 1º argumento 1$

d – tipo integer

 
 

“>%2$b + %1$5d< \n”

  

  

System.out.printf(“>%2$b + %1$10d< \n”, i1, false);

>false + -123<

 
 

Fórmula de base para exemplos acima:

%[arg_index$][flags][width][.precision]conversion char

 
 

 

 

 

 
 

public class Teste {

public static void main(String[] args) {

float f = -12345.6789F;

String[] formats = new String[13];

 
 

formats[0] = “>%f<“;

formats[1] = “>%1$f<“; // mostre o primeiro argumento

formats[2] = “>%1$,f<“; // apenas mostre o separador decimal e de milhar

formats[3] = “>%1$,20f<“; // 20 caracteres com o separador decimal de acordo com o locale atual

formats[4] = “>%1$,-20f<“; // 20 caracteres alinhada a esquerda

formats[5] = “>%1$020f<“; // 20 caracteres e preenchida de zeros a esquerda

formats[6] = “>%1$(f<“; // se for negativo mostre entre parenteses

formats[7] = “>%1$+f<“; // se for negativo, mostre com sinal de menos

 
 

// tanto faz a posição das flags ‘(+’ ou ‘+)’

formats[8] = “>%1$(+f<“; // parenteses tem mais força do que sinal de menos

formats[9] = “>%1$+(f<“; // parenteses tem mais força do que sinal de menos

 
 

// vamos inserir precisão (apenas dois dígitos após casa decimal)

formats[10] = “>%1$.2f<“;

 
 

// tanto faz a posição das flags

formats[11] = “>%1$-(20.2f<“; // alinhe o número a esquerda com 20 digitos e use parenteses nos negativos

formats[12] = “>%1$(-20.2f<“; // idem acima

 
 

 
 

 
 

int counter = 0;

 
 

System.out.println(“Formatando o numero: ” +f);

for(String format: formats){

System.out.printf(“%2$d \t %3$s \t\t” + format + “\n”, f, counter++, format);

}

 
 

}

}

 
 

Output:

Formatando o numero: -12345.679

0 >%f< >-12345,678711<

1 >%1$f< >-12345,678711<

2 >%1$,f< >-12.345,678711<

3 >%1$,20f< > -12.345,678711<

4 >%1$,-20f< >-12.345,678711 <

5 >%1$020f< >-000000012345,678711<

6 >%1$(f< >(12345,678711)<

7 >%1$+f< >-12345,678711<

8 >%1$(+f< >(12345,678711)<

9 >%1$+(f< >(12345,678711)<

10 >%1$.2f< >-12345,68<

11 >%1$-(20.2f< >(12345,68) <

12 >%1$(-20.2f< >(12345,68) <

 
 

Anúncios
Esta entrada foi publicada em Java com as etiquetas . ligação permanente.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s