Früher haben Sie die Verwendung der print
und println
Methoden zum Drucken von Zeichenfolgen auf Standardausgabe gesehen (System.out
). Da alle Zahlen in Zeichenfolgen konvertiert werden können (wie Sie später in dieser Lektion sehen werden), können Sie mit diesen Methoden eine beliebige Mischung aus Zeichenfolgen und Zahlen ausdrucken., Die Java-Programmiersprache verfügt jedoch über andere Methoden, mit denen Sie viel mehr Kontrolle über Ihre Druckausgabe ausüben können, wenn Zahlen enthalten sind.
Die printf-und Formatmethoden
Das Paket java.io
enthält einePrintStream
– Klasse mit zwei Formatierungsmethoden, mit denen Sie print
und println
ersetzen können. Diese Methoden, format
und , entsprechen einander., Die bekannte System.out
, die Sie verwendet haben, ist zufällig ein PrintStream
– Objekt, sodass Sie PrintStream
– Methoden für System.out
aufrufen können. Daher können Sie format
oder an einer beliebigen Stelle in Ihrem Code verwenden, an der Sie zuvor print
oder println
., Zum Beispiel
System.out.format(.....);
Die Syntax für diese beiden java.io.PrintStream
Methoden ist die gleiche:
public PrintStream format(String format, Object... args)
wobei format
eine Zeichenfolge ist, die die zu verwendende Formatierung angibt, und args
ist eine Liste der Variablen, die mit dieser Formatierung gedruckt werden sollen. Ein einfaches Beispiel wäre
Der erste Parameter format
ist eine Formatzeichenfolge, die angibt, wie die Objekte im zweiten Parameter args
formatiert werden sollen., Die Formatzeichenfolge enthält sowohl einfachen Text als auch Formatbezeichner, bei denen es sich um Sonderzeichen handelt, die die Argumente von Object... args
formatieren. (Die Notation Object... args
heißt varargs, was bedeutet, dass die Anzahl der Argumente variieren kann.)
Formatbezeichner beginnen mit einem Prozentzeichen ( % ) und enden mit einem Konverter. Der Konverter ist ein Zeichen, das den Typ des zu formatierenden Arguments angibt. Zwischen dem Prozentzeichen ( % ) und dem Konverter können Sie optionale Flags und Spezifizierer haben., Es gibt viele Konverter, Flags und Spezifizierer, die in
dokumentiert sind Hier ist ein grundlegendes Beispiel:
int i = 461012;System.out.format("The value of i is: %d%n", i);
Die %d
gibt an, dass die einzelne Variable eine Dezimalzahl ist. Die %n
ist ein plattformunabhängiges Zeilenumbruchzeichen. Die Ausgabe lautet:
The value of i is: 461012
Die und format
Methoden sind überlastet., Jede hat eine Version mit folgender Syntax:
public PrintStream format(Locale l, String format, Object... args)
Zum Drucken von Zahlen im französischen System (wobei anstelle der Dezimalstelle in der englischen Darstellung von Gleitkommazahlen ein Komma verwendet wird) würden Sie beispielsweise Folgendes verwenden:
Ein Beispiel
Die folgende Tabelle listet einige der Konverter und Flags auf, die im Beispielprogramm verwendet werden, 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 | Ein Datum & Zeit-Konvertierunglocale-spezifische vollständiger name des Monats. | |
td, te | Ein Datum & Zeitkonvertierung2-stelliger Tag des Monats. td hat führende Nullen nach Bedarf, te nicht. | |
ty, tY | Ein Datum & Zeitkonvertierungty = 2-stelliges Jahr, tY = 4-stelliges Jahr. | |
tl | Ein Datum & ZeitkonvertierungStunde in 12-Stunden-Uhr., | |
tM | Ein Datum & ZeitkonvertierungMinuten in 2 Ziffern, mit führenden Nullen nach Bedarf. | |
tp | Ein Datum & Zeit-Konvertierunglocale-spezifischen „am/pm“ (in Kleinbuchstaben). | |
tm | Ein Datum & ZeitkonvertierungMonate in 2 Ziffern, mit führenden Nullen nach Bedarf., | |
tD | A date & time conversiondate 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 | Zehn Zeichen in der Breite, rechts gerechtfertigt, mit drei Stellen nach dem Komma. |
Das folgende Programm zeigt einige der Formatierungen, die Sie mit format
machen können. Die Ausgabe wird in doppelten Anführungszeichen im eingebetteten Kommentar angezeigt:
format
und . Weitere Details finden Sie im Abschnitt Basic I/O
des Essential Trail auf der Seite „Formatierung“.,Die Verwendung von
String.format
zum Erstellen von Strings ist in Strings enthalten. Die DecimalFormat-Klasse
Sie können die java.text.DecimalFormat
– Klasse verwenden, um die Anzeige von führenden und nachfolgenden Nullen, Präfixen und Suffixen, Gruppierungs – (Tausende) Trennzeichen und dem Dezimaltrennzeichen zu steuern. DecimalFormat
bietet viel Flexibilität bei der Formatierung von Zahlen, kann Ihren Code jedoch komplexer machen.,
Das folgende Beispiel erstellt einDecimalFormat
– Objekt,myFormatter
, indem eine Musterzeichenfolge an denDecimalFormat
– Konstruktor übergeben wird., Die format()
Methode, die DecimalFormat
von NumberFormat
erbt, wird dann von myFormatter
aufgerufen-sie akzeptiert einen double
– Wert als Argument und gibt die formatierte Zahl in einer Zeichenfolge zurück:
Hier ist ein Beispiel programm, das die Verwendung von DecimalFormat
:
Die Ausgabe ist:
123456.789 ###,###.### 123,456.789123456.789 ###.## 123456.79123.78 000000.000 000123.78012345.67 $###,###.### $12,345.67
Die folgende Tabelle erklärt jede Zeile der Ausgabe.