Formattazione dell’output di stampa numerico

Formattazione dell’output di stampa numerico

In precedenza è stato visto l’uso dei metodiprint eprintln per la stampa di stringhe su standard output (System.out). Poiché tutti i numeri possono essere convertiti in stringhe (come vedrai più avanti in questa lezione), puoi usare questi metodi per stampare una miscela arbitraria di stringhe e numeri., Il linguaggio di programmazione Java ha altri metodi, tuttavia, che consentono di esercitare molto più controllo sull’output di stampa quando i numeri sono inclusi.

I metodi printf e format

Il pacchettojava.io include una classePrintStream con due metodi di formattazione che è possibile utilizzare per sostituireprint eprintln. Questi metodi,format eprintf, sono equivalenti tra loro., Il familiare System.out che hai utilizzato è un PrintStream oggetto, quindi puoi richiamare PrintStream metodi su System.out. Pertanto, è possibile utilizzareformat oprintf ovunque nel codice in cui è stato precedentemente utilizzatoprint oprintln., Per esempio,

System.out.format(.....);

La sintassi per questi due java.io.PrintStream metodi è lo stesso:

public PrintStream format(String format, Object... args)

dove format è una stringa che specifica la formattazione per essere utilizzato e args è una lista di variabili di stampa utilizzando la formattazione. Un semplice esempio potrebbe essere

Il primo parametro,format, è una stringa di formato che specifica come gli oggetti nel secondo parametro,args, devono essere formattati., La stringa di formato contiene testo normale e specificatori di formato, che sono caratteri speciali che formattano gli argomenti di Object... args. (La notazioneObject... args è chiamata varargs, il che significa che il numero di argomenti può variare.)

Gli specificatori di formato iniziano con un segno di percentuale ( % ) e terminano con un convertitore. Il convertitore è un carattere che indica il tipo di argomento da formattare. Tra il segno di percentuale ( % ) e il convertitore puoi avere flag e specificatori opzionali., Ci sono molti convertitori, flag e specificatori, che sono documentati in java.util.Formatter

Ecco un esempio di base:

int i = 461012;System.out.format("The value of i is: %d%n", i);

Il %d specifica che la singola variabile è un numero intero decimale. Il %n è un carattere di nuova riga indipendente dalla piattaforma. L’output è:

The value of i is: 461012

I metodi printfe format sono sovraccaricati., Ognuno ha una versione con la seguente sintassi:

public PrintStream format(Locale l, String format, Object... args)

Per stampare numeri nel sistema francese (dove viene utilizzata una virgola al posto del punto decimale in inglese rappresentazione dei numeri in virgola mobile), per esempio, utilizzare:

Esempio

La seguente tabella elenca alcuni dei convertitori e gli indicatori che vengono utilizzati nel programma di esempio, TestFormat.java, che segue la tabella.,

Converters and Flags Used in TestFormat.java
Converter Flag Explanation
d A decimal integer.
f A float.
n A new line character appropriate to the platform running the application. You should always use %n, rather than \n.,
tB A date& time conversion—locale-specific nome completo del mese.
td, te A date& time conversion—2-digit giorno del mese. td ha zeri iniziali se necessario, te no.
ty, tY Una data& conversione temporale—ty = anno a 2 cifre, tY = anno a 4 cifre.
tl Una data& tempo di conversione—ora in orologio di 12 ore.,
tM Una data& conversione del tempo—minuti in 2 cifre, con zeri iniziali se necessario.
tp Una data& conversione di tempo—locale-specifica am / pm (minuscolo).
tm Una data& conversione temporale—mesi in 2 cifre, con zeri iniziali se necessario.,
tD A date & time conversion—date as %tm%td%ty
08 Eight characters in width, with leading zeroes as necessary.
+ Includes sign, whether positive or negative.
, Includes locale-specific grouping characters.
Left-justified..
.3 Three places after decimal point.
10.,3 Dieci caratteri in larghezza, giustificati a destra, con tre punti dopo il punto decimale.

Il seguente programma mostra alcune delle formattazione che si possono fare con format. L’output è mostrato tra virgolette nel commento incorporato:

Nota: La discussione in questa sezione copre solo le basi dei metodi format e printf. Ulteriori dettagli possono essere trovati nella sezioneBasic I/O del percorso essenziale, nella pagina “Formattazione”.,
UtilizzandoString.format per creare stringhe è coperto in stringhe.

La classe DecimalFormat

È possibile utilizzare la classejava.text.DecimalFormat per controllare la visualizzazione di zeri iniziali e finali, prefissi e suffissi, separatori di raggruppamento (migliaia) e separatore decimale. DecimalFormat offre una grande flessibilità nella formattazione dei numeri, ma può rendere il codice più complesso.,

L’esempio che segue crea un oggettoDecimalFormat,myFormatter, passando una stringa di pattern al costruttoreDecimalFormat., format() metodo DecimalFormat eredita da NumberFormat, viene quindi richiamata da myFormatter—accetta un double valore come argomento e restituisce il numero formattato in una stringa:

Ecco un programma di esempio che illustra l’utilizzo di DecimalFormat:

L’output è:

123456.789 ###,###.### 123,456.789123456.789 ###.## 123456.79123.78 000000.000 000123.78012345.67 $###,###.### $12,345.67

La seguente tabella illustra per ogni riga di output.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *