Donnerstag, 18. Dezember 2008
printf in Java
Seit der Version 1.5 gibt es in Java eine bequeme Möglichkeit die Ausgabe zu formatieren.
Jeder PrintStream
besitzt die Methode printf(String format, Object… args)
. Die Standardausgabe System.out
oder die Standardfehlerausgabe System.err
sind solche PrintStream
s.
Folgendes Codefragment zeigt die prinzipielle Verwendung
/** formatierte Ausgabe */
String s = "Zahl";
int zahl = 23;
double d = 3.1415927;
System.out.printf("%s = %d\n", s, zahl);
// ^ ^ ^ ^
// | | | |
// | +----------+
// | |
// +----------+
System.out.printf("alles: [%f]\n", d);
System.out.printf("3 Nachkommastellen: [%.3f]\n", d);
System.out.printf("10 gesamt, 2 NK: [%10.2f]\n", d);
System.out.printf("10 gesamt, 2 NK: [%10.2f]\n", -d);
System.out.printf("10 gesamt, 2 NK: [%10f]\n", -d);
System.out.printf("%%-Zeichen %.2f%%\n", -d);
System.out.printf("String in 10 Zeichen: [%10s]\n", s);
System.out.printf("String in 10 Zeichen: [%-10s]\n", s);
Die Ausgabe ist dann
Zahl = 23
alles: [3,141593]
3 Nachkommastellen: [3,142]
10 gesamt, 2 NK: [ 3,14]
10 gesamt, 2 NK: [ -3,14]
10 gesamt, 2 NK: [ -3,141593]
%-Zeichen -3,14%
String in 10 Zeichen: [ Zahl]
String in 10 Zeichen: [Zahl ]
Die Seite zum direkten Verwenden in eclipse: printf.jpage
Die Klasse String
hat eine Methode format()
, die genauso wie das oben beschriebene printf()
funktioniert, nur liefert format()
eben einen passend formatierten String
zurück.
Ein Beispiel:
// Formatieren der Zahl z so, dass sie rechtsbündig innerhalb von 8 Zeichen mit
// 2 Nachkommastellen angezeigt wird. Der Formatstring für printf() wird mittels
// String.format() erzeugt.
int gesamtBreite = 8;
int anzNachkomma = 2;
double z = 2.12345676;
String fmt = String.format("%%%d.%df\n", gesamtBreite, anzNachkomma);
System.out.printf(fmt, z);
// Variante 2, wie oben aber linksbündig
int gesamtBreite = -8;
int anzNachkomma = 2;
double z = 2.12345676;
String fmtZ = String.format("%" + gesamtBreite + "." + anzNachkomma + "f\n",z);
System.out.print(fmtZ);
Labels: Java
Abonnieren Posts [Atom]
Kommentar veröffentlichen