Dříve jsi viděl používání print
println
metody pro tisk řetězce na standardní výstup (System.out
). Protože všechna čísla lze převést na řetězce (jak uvidíte později v této lekci), můžete použít tyto metody vytisknout libovolný směs řetězců a čísel., Programovací jazyk Java má však jiné metody, které vám umožňují vykonávat mnohem větší kontrolu nad tiskovým výstupem, když jsou zahrnuta čísla.
printf a formát Metody
java.io
balení obsahuje PrintStream
třídu, která má dvě metody formátování, které můžete použít k nahradit print
println
. Tyto metody, format
a printf
, jsou navzájem rovnocenné., Známé System.out
, které jste používali stane být PrintStream
objekt, takže si můžete vyvolat PrintStream
metody System.out
. Tak, můžete použít format
nebo printf
kdekoli v kódu, kde jste dříve používali print
nebo println
., Například,
System.out.format(.....);
syntaxe pro tyto dva java.io.PrintStream
metody je stejný:
public PrintStream format(String format, Object... args)
kde format
je řetězec, který určuje formátování mají být použity, a args
je seznam proměnných, které mají být vytištěny pomocí formátování. Jednoduchý příklad by mohl být
první parametr, format
, je formátovací řetězec určující, jak se objekty v druhý parametr, args
, musí být formátovány., Formátovací řetězec obsahuje prostý text, stejně jako specifikátory formátu, které jsou speciální znaky, které formát argumenty Object... args
. (Zápis Object... args
se nazývá varargs, což znamená, že počet argumentů se může lišit.)
specifikátory formátu začínají znaménkem procenta ( % ) a končí převodníkem. Převodník je znak označující typ argumentu, který má být formátován. Mezi znaménkem procenta ( % ) a převodníkem můžete mít volitelné příznaky a specifikátory., Existuje mnoho konvertory, vlajky, a specifikátory, které jsou popsány v java.util.Formatter
Zde je základní příklad:
int i = 461012;System.out.format("The value of i is: %d%n", i);
%d
určuje, že jedna proměnná je desítkové celé číslo. %n
je nový řádek nezávislý na platformě. Výstup je:
The value of i is: 461012
printf
format
metody jsou přetížené., Každý má verzi s následující syntaxí:
public PrintStream format(Locale l, String format, Object... args)
Pro tisk čísla ve francouzském systému (kde se používá čárka místo desetinné místo v anglické reprezentaci čísla s plovoucí desetinnou čárkou), například, měli byste použít:
Příklad
V následující tabulce jsou uvedeny některé z měniče a vlajky, které jsou použity v programu vzorku, TestFormat.java
, který následuje v tabulce.,
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 | datum & čas konverzelocale-specific plné jméno měsíce. | |
td, te | a date & time conversion-2-místný den v měsíci. td má podle potřeby vedoucí nuly, te ne. | |
ty, tY | datum & čas konverzety = 2-místný rok, tY = 4 číslice roku. | |
tl | a date & time conversion-hour in 12-hour clock., | |
tM | a date & time conversion-minutes in 2 číslice, s předními nulami podle potřeby. | |
tp | datum & čas konverzelocale-specific am/pm (malá písmena). | |
tm | datum & čas konverzeměsíce v 2 číslice, úvodní nuly, jak je třeba., | |
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 | deset znaků na šířku, vpravo, se třemi místy za desetinnou čárkou. |
následující program ukazuje některé formátování, které můžete dělat s format
. Výstup je uveden v uvozovkách ve vloženém komentář:
format
printf
metody. Další podrobnosti naleznete v sekciBasic I/O
na stránce „formátování“.,použití
String.format
pro vytvoření řetězců je pokryto řetězci. DecimalFormat Třídy
můžete použít java.text.DecimalFormat
třídy k ovládání zobrazení počáteční a koncové nuly, předpon a přípon, seskupení (v tisících) oddělovač a oddělovač desetinných míst. DecimalFormat
nabízí velkou flexibilitu při formátování čísel,ale může váš kód zkomplikovat.,
následující příklad vytvoří DecimalFormat
objekt, myFormatter
, předáním řetězec vzorku do DecimalFormat
konstruktoru., format()
způsob, jakým DecimalFormat
dědí z NumberFormat
, je pak vyvolána tím myFormatter
přijímá double
hodnotu jako argument a vrací formátované číslo na řetězec:
Tady je ukázkový program, který ukazuje použití DecimalFormat
:
výstup:
123456.789 ###,###.### 123,456.789123456.789 ###.## 123456.79123.78 000000.000 000123.78012345.67 $###,###.### $12,345.67
následující tabulka vysvětluje každý řádek výstupu.