Post on 06-Feb-2018
transcript
Einstieg in die Informatik mit JavaFormatierte Ausgabe
Gerd Bohlender
Institut fur Angewandte und Numerische Mathematik
1 / 22
Gliederung
1 Uberblick
2 Nachteile von println
3 Formatierte Ausgabe
4 Weitere Formatvarianten
2 / 22
Gliederung
1 Uberblick
2 Nachteile von println
3 Formatierte Ausgabe
4 Weitere Formatvarianten
3 / 22
Uberblick
In diesem Kapitel wird beschrieben, wie die Ausgabe vonZahlen ubersichtlich gestaltet werden kann.
Bisherige AusgabeAusgabe mit println in freiem Format.
Alternative AusgabeFormatierte Ausgabe mit printf.
4 / 22
Gliederung
1 Uberblick
2 Nachteile von println
3 Formatierte Ausgabe
4 Weitere Formatvarianten
5 / 22
Eigenschaften von println
Bei der Ausgabe mit print bzw. println werden nur so vieleStellen ausgegeben, wie fur die Darstellung des Werts notigsind.
Vorteil: sparsamer PlatzverbrauchNachteil: kann sehr unubersichtlich werden
Gutes Beispiel: Funktionswert ausgeben
x = 1;System . out . p r i n t l n ( ” s in ( ” + x + ” ) = ” +
Math . s in ( x ) ) ;
Ausgabe:
sin(1.0) = 0.8414709848078965
6 / 22
Nachteile von println
Schlechtes Beispiel: Funktionstabelle ausgeben
for ( double x=−0.2; x<1; x +=0.1)System . out . p r i n t l n ( x + ” \ t ” + Math . s in ( x ) +
” \ t ” + Math . cos ( x ) ) ;
Ausgabe:
-0.2 -0.19866933079506122 0.9800665778412416-0.1 -0.09983341664682815 0.99500416527802580.0 0.0 1.00.1 0.09983341664682815 0.99500416527802580.2 0.19866933079506122 0.98006657784124160.30000000000000004 0.2955202066613396 0.9553364891256060.4 0.3894183423086505 0.92106099400288510.5 0.479425538604203 0.87758256189037280.6 0.5646424733950354 0.82533561490967830.7 0.644217687237691 0.76484218728448850.7999999999999999 0.7173560908995227 0.69670670934716550.8999999999999999 0.7833269096274833 0.62160996827066450.9999999999999999 0.8414709848078964 0.5403023058681398
7 / 22
Gliederung
1 Uberblick
2 Nachteile von println
3 Formatierte Ausgabe
4 Weitere Formatvarianten
8 / 22
Formatierte Ausgabe
Mit der Methode System.out.printf() konnen Ergebnisseformatiert ausgegeben werden. Gleichbedeutend istSystem.out.format().
SyntaxSystem.out.printf ( Formatstring, Ausdrucke )
• Die Ausdrucke steht fur eine durch Komma getrennte Listevon Ausdrucken beliebigen Typs, die ausgegeben werdensollen – z.B. Variablen.
• Der Formatstring enthalt Formatangaben der Form %d, %f,%e, %s, usw.
• Die Formatangaben werden in der angegebenenReihenfolge zur Formatierung der Ausdrucke verwendet.
9 / 22
Formatierte Ausgabe
Bedeutung der Formatangaben:%d ganze Dezimalzahl%e Gleitkommazahl im Gleitkommaformat (mit Exponent)%f Gleitkommazahl im Festkommaformat (ohne Exponent)%s String
Regeln fur die formatierte Ausgabe:• Der restliche Formatstring wird als Text ausgegeben.• Achtung: die auszugebenden Werte sind durch Komma
getrennt, nicht durch +.• Achtung: das Zeilenende (entsprechend println) muss
durch \n im Formatstring angegeben werden.• Falls zu wenige Formatangaben vorliegen, werden nur die
ersten Ausdrucke ausgegeben.• Falls zu viele oder falsche Formatangaben vorliegen, wird
ein Fehler gemeldet.10 / 22
Formatierte Ausgabe – double im Gleitkommaformat
Beispiel: Funktionstabelle ausgeben
for ( double x=−0.2; x<1; x +=0.1)System . out . p r i n t f ( ”%e %e %e\n ” ,
x , Math . s in ( x ) , Math . cos ( x ) ) ;
Ausgabe:
-2.000000e-01 -1.986693e-01 9.800666e-01-1.000000e-01 -9.983342e-02 9.950042e-010.000000e+00 0.000000e+00 1.000000e+001.000000e-01 9.983342e-02 9.950042e-012.000000e-01 1.986693e-01 9.800666e-013.000000e-01 2.955202e-01 9.553365e-014.000000e-01 3.894183e-01 9.210610e-015.000000e-01 4.794255e-01 8.775826e-016.000000e-01 5.646425e-01 8.253356e-017.000000e-01 6.442177e-01 7.648422e-018.000000e-01 7.173561e-01 6.967067e-019.000000e-01 7.833269e-01 6.216100e-011.000000e+00 8.414710e-01 5.403023e-01
11 / 22
Formatierte Ausgabe – double im Festkommaformat
Beispiel: Funktionstabelle ausgeben
for ( double x=−0.2; x<1; x +=0.1)System . out . p r i n t f ( ”%f %f %f \n ” ,
x , Math . s in ( x ) , Math . cos ( x ) ) ;
Ausgabe:
-0.200000 -0.198669 0.980067-0.100000 -0.099833 0.9950040.000000 0.000000 1.0000000.100000 0.099833 0.9950040.200000 0.198669 0.9800670.300000 0.295520 0.9553360.400000 0.389418 0.9210610.500000 0.479426 0.8775830.600000 0.564642 0.8253360.700000 0.644218 0.7648420.800000 0.717356 0.6967070.900000 0.783327 0.6216101.000000 0.841471 0.540302
12 / 22
Formatierte Ausgabe – Beispiel String
Beispiel
System . out . p r i n t f ( ” Dies %seine%s\n ” ,” i s t ” , ” Ze i l e ! ” ) ;
Ausgabe:
Dies ist eine Zeile!
Beachte:• Mischung von Formatstring und den nachfolgenden
auszugebenden Strings,• Ausgabe der Leerzeichen in Formatstring oder auszugebendem
String,• kein Leerzeichen zwischen "%s" und "eine",• explizite Ausgabe des Zeilenendes.
13 / 22
Gliederung
1 Uberblick
2 Nachteile von println
3 Formatierte Ausgabe
4 Weitere Formatvarianten
14 / 22
Weitere Formatvarianten: Angabe der Zeichenzahl
• Zahlangabe zwischen % und dem Buchstaben: Anzahl derauszugebenden Zeichen.
• Falls die Zeichenzahl nicht ausreicht, wird sie erhoht.
Beispiele unterschiedliche Breite
System . out . p r i n t f ( ”%4d\n ” , 123) ;System . out . p r i n t f ( ”%5d\n ” , 123) ;System . out . p r i n t f ( ”%2d\n ” , 123) ;
Ausgabe:
123123
123
15 / 22
Weitere Formatvarianten – Beispiel double
Beispiele unterschiedliche Breite
System . out . p r i n t f ( ”%10e\n ” , 123.456) ;System . out . p r i n t f ( ”%15e\n ” , 123.456) ;System . out . p r i n t f ( ”%10f \n ” , 123.456) ;System . out . p r i n t f ( ”%15f \n ” , 123.456) ;
Ausgabe:
1.234560e+021.234560e+02
123.456000123.456000
16 / 22
Weitere Formatvarianten: Darstellung des Vorzeichens
• Leerzeichen nach %: positives Vorzeichen wird alsLeerzeichen ausgegeben.
• Pluszeichen nach %: positives Vorzeichen wird alsPluszeichen ausgegeben.
Unterschiedliche Vorzeichen
System . out . p r i n t f ( ”%3d\n ” , 123) ;System . out . p r i n t f ( ”% 3d\n ” , 123) ;System . out . p r i n t f ( ”% 3d\n ” , −123);System . out . p r i n t f ( ”%+3d\n ” , 123) ;
Ausgabe:
123123
-123+123
17 / 22
Darstellung des Vorzeichens – double
Unterschiedliche Vorzeichen
System . out . p r i n t f ( ”% 10e\n ” , 123.456) ;System . out . p r i n t f ( ”% 10e\n ” , −123.456);System . out . p r i n t f ( ”%+10e\n ” , 123.456) ;System . out . p r i n t f ( ”% 10 f \n ” , 123.456) ;System . out . p r i n t f ( ”% 10 f \n ” , −123.456);System . out . p r i n t f ( ”%+10f \n ” , 123.456) ;
Ausgabe:
1.234560e+02-1.234560e+02+1.234560e+02123.456000
-123.456000+123.456000
18 / 22
Weitere Formatvarianten: Nachkommastellen beidouble
• Zwei Zahlangaben n.m nach %:• n = Gesamtzahl der auszugebenden Zeichen,• m = Zahl der Nachkommastellen.
Unterschiedliche Nachkommastellen
System . out . p r i n t f ( ” %10.3e\n ” , 123.456) ;System . out . p r i n t f ( ” %10.4e\n ” , 123.456) ;System . out . p r i n t f ( ” %10.2e\n ” , 123.456) ;
Ausgabe:
1.235e+021.2346e+02
1.23e+02
19 / 22
Weitere Formatvarianten: Nachkommastellen beidouble
Unterschiedliche Nachkommastellen
System . out . p r i n t f ( ” %10.3 f \n ” , 123.456) ;System . out . p r i n t f ( ” %10.4 f \n ” , 123.456) ;System . out . p r i n t f ( ” %10.2 f \n ” , 123.456) ;System . out . p r i n t f ( ” %10.1 f \n ” , 123.456) ;System . out . p r i n t f ( ” %8.3 f \n ” , 123.456) ;
Ausgabe:
123.456123.4560123.46123.5
123.456
20 / 22
Beispiel: Festkommaformat mit Vorzeichen
Beispiel Funktionstabelle ausgeben
for ( double x=−0.2; x<1; x +=0.1)System . out . p r i n t f ( ”% 10.7 f % 10.7 f % 10.7 f \n ” ,
x , Math . s in ( x ) , Math . cos ( x ) ) ;
Ausgabe:
-0.2000000 -0.1986693 0.9800666-0.1000000 -0.0998334 0.99500420.0000000 0.0000000 1.00000000.1000000 0.0998334 0.99500420.2000000 0.1986693 0.98006660.3000000 0.2955202 0.95533650.4000000 0.3894183 0.92106100.5000000 0.4794255 0.87758260.6000000 0.5646425 0.82533560.7000000 0.6442177 0.76484220.8000000 0.7173561 0.69670670.9000000 0.7833269 0.62161001.0000000 0.8414710 0.5403023
21 / 22
Beispiel: Gleitkommaformat mit Vorzeichen
Beispiel Funktionstabelle ausgeben
for ( double x=−0.2; x<1; x +=0.1)System . out . p r i n t f ( ”% 14.7e % 14.7e % 14.7e\n ” ,
x , Math . s in ( x ) , Math . cos ( x ) ) ;
Ausgabe:
-2.0000000e-01 -1.9866933e-01 9.8006658e-01-1.0000000e-01 -9.9833417e-02 9.9500417e-010.0000000e+00 0.0000000e+00 1.0000000e+001.0000000e-01 9.9833417e-02 9.9500417e-012.0000000e-01 1.9866933e-01 9.8006658e-013.0000000e-01 2.9552021e-01 9.5533649e-014.0000000e-01 3.8941834e-01 9.2106099e-015.0000000e-01 4.7942554e-01 8.7758256e-016.0000000e-01 5.6464247e-01 8.2533561e-017.0000000e-01 6.4421769e-01 7.6484219e-018.0000000e-01 7.1735609e-01 6.9670671e-019.0000000e-01 7.8332691e-01 6.2160997e-011.0000000e+00 8.4147098e-01 5.4030231e-01
22 / 22
Weitere Informationen
Weitere Informationen zu printf und den Formatangabenfinden Sie in der Java-Online-Dokumentation unter• http://www.j2ee.me/javase/6/docs/api/java/io/PrintStream.html
• http://www.j2ee.me/javase/6/docs/api/java/util/Formatter.html#syntax
23 / 22