M3 - Programació estructurada / Continguts UF1: System.out.printf

De wikiserver
Dreceres ràpides: navegació, cerca

La sintaxi general de printf és:

   printf (String de format, Object ... dades);
  • El String de format és una cadena de caràcters que conté:
- text fix que serà mostrat tal qual
- especificadors de format que determinen la forma en què es van mostrar les dades.
- dades representa la informació que es va a mostrar i sobre la qual s'aplica el format.
El nombre de dades que es poden mostrar és variable.

Especificadors de format:

  • La sintaxi per als especificadors de format de printf és:
   %[posició_dada$][indicador_de_format][ample][.precisió]caràcter_de_conversió 
  • Els elements entre claudàtors són opcionals.
  • posició_dada: indica la posició de la dada sobre el qual es va aplicar el format. El primer per l'esquerra ocupa la posició 1.
  • indicador_de_format: és el conjunt de caràcters que determina el format de sortida.
  • Els indicadors de format de printf en Java són:
INDICADORS DE FORMAT
INDICADOR SIGNIFICAT
- Alineació a l'esquerra
( Els nombres negatiur es mostren entre parèntesi
' Mostra el separador decimal
+ Mostre el signe + en números positius
0 Omple amb zeros
  • ample: Indica la grandària mínima, mesurat en nombre de caràcters, que ha d'ocupar la dada en pantalla.
  • .precisió: Indica el nombre de decimals que seran representats. Solament aplicable adades de tipus float o double.
  • caràcter_de_conversió: Caràcter que indica com ha de ser formatat la dada. Els més utilitzats es mostren en la taula.
CARÀCTERS DE CONVERSIÓ
CARÀCTER TIPUS
d Número enter en base decimal
f Número real amb punt fix
E,e Número real en notació científica
g Número real. Es representa en notació científica si és molt gran o molt petit
X,x Número enter en base hexadecimal
s String
S String en majúscules
c Caràcter Unicode
C Caràcter Unicode en majúscules
  • Exemples:
12.3698 de tipus double amb dos decimals:
   System.out.printf("%.2f %n", 12.3698);

   Sortida: 12,37
- % indica que en aquesta posició es va a escriure un valor. El valor a escriure es troba a continuació de les cometes.
- .2 indica el nombre de decimals.
- f indica que el nombre és de tipus float o double.
- %n indica un salt de línia. Equival a \n. Podem usar tots dos.
Si el valor es troba en una variable:
   double n = 1.25036;
   System.out.printf("%.3f %n", n);

   Sortida: 1,250
Per mostrar el signe + en un nombre positiu:
   double n = 1.25036;
   System.out.printf("%+.3f %n", n);

   Sortida: +1.250
Si el nombre a mostrar és un enter s'utilitza el caracter d:
   int x = 10;
   System.out.printf("%d %n", x);

   Sortida: 10
Per mostrar-ho amb signe:
   int x = 10;
   System.out.printf("%+d %n", x);

   Sortida: +10


Per mostrar diverses variables posarem tants % com a valors anem a mostrar. Les variables s'escriuen a continuació de les cometes separades per comes:
   double n = 1.25036;
   int x = 10;
   System.out.printf("n = %.2f x = %d %n", n, x);

   Sortida: n = 1,25 x = 10


Quan hi ha diverses variables podem indicar de qual d'elles és el valor a mostrar escrivint 1$, 2$, 3$, ... indicant que el valor a mostrar és el de la primera variable que apareix a continuació de les cometes, de la segona, etc.
La instrucció anterior la podem escriure així:
   System.out.printf("n = %1$.2f x = %2$d %n", n, x);
Aquest nombre és opcional, si no apareix s'entendrà que el primer valor prové de la primera variable, el segon de la segona, etc.
Si volem mostrar el número 123.4567 i el seu quadrat tots dos amb dos decimals hem d'escriure:
   double n = 123.4567;
   System.out.printf("El quadrat de %.2f és %.2f ", n, n*n);

   Sortida: El quadrat de 123,46 és 15241,56
printf permet mostrar valors amb un ample de camp determinat. Per exemple, si volem mostrar el contingut de n en un ample de camp de 10 caràcters escrivim:
   double n = 1.25036;
   System.out.printf("%+10.2f %n", n);

   Sortida: bbbbb+1.25    //On cada b indica un espai en blanc.
El 10 indica la grandària en caràcters que ocuparà el nombre en pantalla. S'expliquen a més de les xifres del nombre el punt decimal i el signe si ho porta. En aquest cas el nombre ocupa un espai de 5 caràcters (3 xifres, un punt i el signe) per tant s'afegeixen 5 espais en blanc al principi per completar la grandària de 10.
Si volem que en lloc d'espais en blancs ens mostri el nombre completant l'ample amb zeros escrivim:
   System.out.printf("%+010.2f %n", n);

   Sortida: +000001.25
Mostrar el número 1.22 en un ample de camp de 10 caràcters i amb dos decimals.
   double preu = 1.22;
   System.out.printf("%10.2f", preu);

   Sortida: bbbbbb1.22    //On cada b indica un espai en blanc.
El nombre ocupa un espai total de 10 caràcters incloent el punt i els dos decimals.
Mostrar la cadena "Total:" amb un ample de 10 caràcters i alineada a l'esquerra:
   System.out.printf("%-10s", "Total:");

   Sortida: Total:bbbb    //On cada b indica un espai en blanc.
El caracter s indica que es va a mostrar una cadena de caràcters.
El signe - indica alineació a l'esquerra.
Mostrar la cadena "Total:" amb un ample de 10 caràcters i alineada a la dreta:
   System.out.printf("%10s", "Total:");

   Sortida: bbbbTotal:    //On cada b indica un espai en blanc.