Einstieg in die Informatik mit Java - math.kit. · PDF fileEinstieg in die Informatik mit Java...

Post on 06-Feb-2018

220 views 3 download

Transcript of Einstieg in die Informatik mit Java - math.kit. · PDF fileEinstieg in die Informatik mit Java...

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