Redigering av utskrifter
När man omvandlar tal till text (som man typiskt gör vid utskrifter) så vill man ofta styra hur många decimaler som skall tas med, vilka positioner som skall används etc. Java innehåller flera kraftfulla möjligheter för detta som också inkluderar val av nationella konventioner (t ex decimalpunk eller decimalkomma). Här tar i bara upp formatering med en formatsträng som är mycket likt hur man gör t ex i Matlab och vissa andra programmeringsspråket.
I stället för att använda metoderna System.out.println
och System.out.print
ska vi använda metoden System.out.format
och metoden String.format
.
Metoden format
Med metoden format
kan man påverka utskriften på många sätt,
t ex antalet decimaler vid utskriften. Den metoden är
mycket lik metoder som används i vissa
andra programmeringsspråk som C och Matlab (där den kallas printf).
Metoden format
finns i System.out
och i klassen String
.
Exempel 1, med
System.out
:
double x = Math.sqrt(2.0);
System.out.println("x="+x);
ger utskriftenx=1.4142135623730951
System.out.format("x=%.2f",x);
ger utskriftenx=1.41
System.out.format("x=%10.2f",x);
ger utskriften
x= 1.41
System.out
:
int k = 32;
System.out.println("k="+k);
ger utskriftenk=32
System.out.format("k=%d",k);
ger utskriftenk=32
System.out.format("k=%8d",k);
ger utskriften
k= 32
System.out
:
double x = Math.sqrt(2.0); int k = 32;
System.out.println("x="+x + " k="+k);
ger utskriftenx=1.4142135623730951 k=32
System.out.format("System.out.format("x=%f k=%d",x,k);
ger utskriftenx=1.414214 k=32
System.out.format("x=%.2f ,k=%3d", x, k);
ger utskriftenx=1.41 ,k= 32
System.out
:
String g="Kim";
System.out.println("g="+g);
ger utskrifteng=Kim
System.out.format("System.out.format("g=%s,g);
ger utskriftens=Kim
System.out.format("g=%10s,g);
ger utskriftens= Kim
double x = Math.sqrt(2.0); int k = 32;
System.out.println("x="+x + "\n" + " k="+k);
ger utskriftenx=1.4142135623730951 k=3
System.out.format("x=%.2f \n k=%d",x,k);
ger utskriftenx=1.41 k=32
String
, där vi lagrar resultatet i en String-variabel och därefter skriver ut denna String-variabel::
double x = Math.sqrt(2.0); int k = 32;
String res = String.format("%s %f %s %d", "x=",x,"k=",k);
System.out.println(res)
ger utskriftenx= 1,414 k= 32
String-formattering
"%s" | Formatterar en sträng med så många tecken som är nödvändiga |
"%15s" | Formatterar över 15 positioner, högerjusterat |
"%-15s" | Formatterar över 15 positioner, vänsterjusterat |
"%d" | Formatterar med så många positioner som är nödvändiga |
"%15d" | Formatterar över 15 positioner, högerjusterat |
"%-15d" | Formatterar över 15 positioner, vänsterjusterat |
"%f" | Formatterar med så många positioner som är nödvändiga, alltid sex decimaler |
"%.2f" | Formatterar så många siffror som är nödvändiga, 2 decimaler, högerjusterat. |
"%10.2f" | Formatterar över 10 positioner, 2 decimaler, vänsterjusterat |