eerder zag u het gebruik van de print en println methoden voor het afdrukken van tekenreeksen naar standaarduitvoer (System.out). Omdat alle getallen kunnen worden geconverteerd naar tekenreeksen (zoals u later in deze les zult zien), kunt u deze methoden gebruiken om een willekeurig mengsel van tekenreeksen en getallen af te drukken., De programmeertaal Java heeft echter andere methoden die u in staat stellen om veel meer controle uit te oefenen over uw printuitvoer wanneer nummers zijn opgenomen.
de printf-en opmaakmethoden
de java.io het pakket bevat een PrintStream klasse die twee opmaakmethoden heeft die u kunt gebruiken om print en printlnte vervangen. Deze methoden, format en printf, zijn gelijkwaardig aan elkaar., Het bekende System.out dat u gebruikt is een PrintStream object, zodat u PrintStream methoden kunt aanroepen op System.out. U kunt dus format of printf overal in uw code gebruiken waar u eerder print of printlnhebt gebruikt., Bijvoorbeeld:
System.out.format(.....);
de syntaxis voor deze twee java.io.PrintStream
public PrintStream format(String format, Object... args)
waarbijformatis een tekenreeks die de te gebruiken opmaak specificeert en args is een lijst van de variabelen die met die opmaak moeten worden afgedrukt. Een eenvoudig voorbeeld is
de eerste parameter, format, is een format string die aangeeft hoe de objecten in de tweede parameter, args, moeten worden opgemaakt., De opmaakstring bevat platte tekst en opmaakspecificaties, dit zijn speciale tekens die de argumenten van Object... argsformatteren. (De notatie Object... args wordt varargs genoemd, wat betekent dat het aantal argumenten kan variëren.)
Formaatspecificaties beginnen met een procentteken ( % ) en eindigen met een converter. De converter is een teken dat het type argument aangeeft dat moet worden geformatteerd. Tussen het procentteken ( % ) en de converter kunt u optionele vlaggen en specificaties hebben., Er zijn veel converters, flags en specifiers, die gedocumenteerd zijn in java.util.Formatter
Hier is een basisvoorbeeld:
int i = 461012;System.out.format("The value of i is: %d%n", i);
de %dgeeft aan dat de enkele variabele een decimaal geheel is. De %n is een platform-onafhankelijk newline teken. De uitvoer is:
The value of i is: 461012
De printfenformatmethoden zijn overbelast., Elke versie heeft de volgende syntaxis:
public PrintStream format(Locale l, String format, Object... args)
om getallen af te drukken in het Franse systeem (waar een komma wordt gebruikt in plaats van de decimaal in de Engelse weergave van floating point getallen), bijvoorbeeld, zou u gebruik maken van:
een voorbeeld
de volgende tabel toont enkele van de converters en vlaggen die worden gebruikt in het voorbeeldprogramma, TestFormat.java, dat volgt op de tabel.,
Converters and Flags Used in TestFormat.java
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 full name of month.
td, te
a date & tijdconversie2-cijferige dag van de maand. td heeft voorloopnullen als dat nodig is, te Niet.
ty, tY
a date & tijdconversiety = 2-cijferig jaar, tY = 4-cijferig jaar.
tl
a date & tijdconversieuur in 12-uursklok.,
tM
a date & tijdconversieminuten in 2 cijfers, met voorloopnullen indien nodig.
tp
a date & tijdconversielokale-specifieke am/pm (kleine letters).
tm
a date & tijdconversiemaanden in 2 cijfers, met voorloopnullen indien nodig.,
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
tien tekens in de breedte, rechts uitgelijnd, met drie plaatsen na de komma.
het volgende programma toont enkele opmaak die u kunt doen met format. De uitvoer wordt weergegeven tussen dubbele aanhalingstekens in de ingebedde opmerking:
opmerking: de discussie in deze paragraaf behandelt alleen de basis van de format en printf methoden. Meer details zijn te vinden in de Basic I/O sectie van het Essential trail, in de” Formatting ” pagina., het gebruik van String.format om tekenreeksen aan te maken is bedekt met tekenreeksen.
de DecimalFormat-Klasse
u kunt dejava.text.DecimalFormat – Klasse gebruiken om de weergave van voor-en achterliggende nullen, voorvoegsels en achtervoegsels, groepeer (duizenden) scheidingstekens en het decimale scheidingsteken te beheren. DecimalFormat biedt veel flexibiliteit bij het formatteren van getallen, maar het kan uw code complexer maken.,
het volgende voorbeeld maakt een DecimalFormat object, myFormatter, door een patroonstring door te geven aan de DecimalFormat constructor., De format() methode DecimalFormat erft van NumberFormat“, wordt dan aangeroepen door myFormatterhet accepteert double waarde als argument en retourneert de opgemaakte aantal in een string:
Hier is een voorbeeld van een programma dat illustreert het gebruik van DecimalFormat: