Tidigare såg du användningen avprint
ochprintln
metoder för att skriva ut strängar till standardutmatning (System.out
). Eftersom alla nummer kan konverteras till strängar (som du kommer att se senare i den här lektionen) kan du använda dessa metoder för att skriva ut en godtycklig blandning av strängar och nummer., Programmeringsspråket Java har dock andra metoder som gör att du kan utöva mycket mer kontroll över utskriften när siffror ingår.
printf och format metoder
java.io
paketet innehåller enPrintStream
klass som har två formateringsmetoder som du kan använda för att ersättaprint
ochprintln
. Dessa metoder,format
ochprintf
, motsvarar varandra., Det välbekantaSystem.out
som du har använt råkar vara ettPrintStream
– objekt, så att du kan anropaPrintStream
– metoder påSystem.out
. Således kan du användaformat
ellerprintf
var som helst i din kod där du tidigare har använtprint
ellerprintln
., Till exempel
System.out.format(.....);
syntaxen för dessa två java.io.PrintStream
metoder är desamma:
public PrintStream format(String format, Object... args)
där format
är en sträng som anger vilken formatering som ska användas och
public PrintStream format(String format, Object... args)
där format
id = ”cb8d954505” > är en lista över de variabler som ska skrivas ut med den formateringen. Ett enkelt exempel skulle vara
den första parametern,format
, är en formatsträng som anger hur objekten i den andra parametern,args
, ska formateras., Formatsträngen innehåller oformaterad text samt formatspecificerare, som är specialtecken som formaterar argumenten för Object... args
. (Notationen Object... args
heter varargs, vilket innebär att antalet argument kan variera.)
Formatspecificerare börjar med ett procenttecken ( % ) och slutar med en omvandlare. Konverteraren är ett tecken som anger vilken typ av argument som ska formateras. Mellan procenttecknet ( % ) och konverteraren kan du ha valfria flaggor och specifierare., Det finns många omvandlare, flaggor och specifiers, som dokumenteras i java.util.Formatter
här är ett grundläggande exempel:
int i = 461012;System.out.format("The value of i is: %d%n", i);
%d
anger att den enskilda variabeln är ett decimaltal. %n
är ett plattformsoberoende newline-tecken. Utgången är:
The value of i is: 461012
metoderna printf
och format
är överbelastade., Var och en har en version med följande syntax:
public PrintStream format(Locale l, String format, Object... args)
för att skriva ut siffror i det franska systemet (där ett kommatecken används i stället för decimalen i den engelska representationen av flyttal), skulle du till exempel använda:
ett exempel
Följande tabell listar några av de omvandlare och flaggor som används i provprogrammet, TestFormat.java
, som följer tabellen.,
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 | a date& time conversionlocale-specific fullständigt namn på månaden. | |
td, te | ett datum& tid konvertering2-siffrig dag i månaden. td har ledande nollor efter behov, te gör det inte. | |
ty, tY | ett datum& tid konverteringty = 2-siffrigt år, tY = 4-siffrigt år. | |
tl | ett datum& tid konverteringtimme i 12-timmars klocka., | |
tM | ett datum& tidsomräkningminuter i 2 siffror, med ledande nollor vid behov. | |
tp | a date& time conversionlocale-specific am / pm (lower case). | |
tm | ett datum& tidsomräkningmånader i 2 siffror, med ledande nollor vid behov., | |
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 | tio tecken i bredd, rätt motiverad, med tre platser efter decimalpunkt. |
följande program visar en del av formateringen som du kan göra medformat
. Utdata visas inom dubbla citattecken i den inbäddade kommentaren:
format
ochprintf
. Ytterligare detaljer finns i avsnittetBasic I/O
I det väsentliga spåret, på sidan ”formatering”.,att använda
String.format
för att skapa strängar är täckt av strängar. klassen DecimalFormat
Du kan använda klassenjava.text.DecimalFormat
för att styra visningen av ledande och avslutande nollor, prefix och suffix, gruppering (tusentals) separatorer och decimalseparator. DecimalFormat
erbjuder stor flexibilitet i formateringen av siffror, men det kan göra din kod mer komplex.,
exemplet som följer skapar ettDecimalFormat
– objekt,myFormatter
, genom att skicka en mönsterstring till konstruktörenDecimalFormat
., format()
metoden, som DecimalFormat
ärver från NumberFormat
, anropas sedan av myFormatter
– den accepterar ett double
– värde som ett argument och returnerar det formaterade numret i en sträng:
Här är ett exempelprogram som illustrerar användningen av DecimalFormat
:
utdata är:
123456.789 ###,###.### 123,456.789123456.789 ###.## 123456.79123.78 000000.000 000123.78012345.67 $###,###.### $12,345.67
Följande tabell förklarar varje rad av utdata.