formatowanie numerycznego wyjścia wydruku

formatowanie numerycznego wyjścia wydruku

wcześniej widziałeś użycie metod print I println do drukowania ciągów na standardowe wyjście (System.out). Ponieważ wszystkie liczby mogą być konwertowane na ciągi znaków (jak zobaczysz w dalszej lekcji), możesz użyć tych metod, aby wydrukować dowolną mieszankę łańcuchów i liczb., Język programowania Java ma jednak inne metody, które pozwalają na znacznie większą kontrolę nad wydrukiem, gdy liczby są włączone.

metody printf i formatowania

java.io pakiet zawiera PrintStream klasa, która ma dwie metody formatowania, które można zastąpić print I println. Te metody, format I printf, są sobie równoważne., Znany System.out, którego używasz, jest obiektem PrintStream, więc możesz wywołać PrintStreammetody na System.out. W ten sposób możesz użyć format lub printf w dowolnym miejscu kodu, w którym wcześniej używałeś print lub println., Na przykład

System.out.format(.....);

składnia tych dwóch metod java.io.PrintStream jest taka sama:

public PrintStream format(String format, Object... args)

gdzie format jest ciągiem znaków określającym formatowanie, które ma być użyte, a args jest listą zmiennych, które mają być wydrukowane przy użyciu tego formatowania. Prostym przykładem może być

pierwszy parametr,format, jest łańcuchem formatowania określającym sposób formatowania obiektów w drugim parametrze,args., Łańcuch formatowania zawiera zarówno zwykły tekst, jak i SPECYFIKATORY FORMATU, które są znakami specjalnymi formatującymi argumenty Object... args. (Zapis Object... args nazywa się varargs, co oznacza, że liczba argumentów może się różnić.)

SPECYFIKATORY FORMATU rozpoczynają się znakiem procentowym ( % ), a kończą konwerterem. Konwerter jest znakiem wskazującym typ argumentu, który ma być sformatowany. Pomiędzy znakiem procentowym ( % ) a konwerterem możesz mieć opcjonalne flagi i specyfikatory., Istnieje wiele konwerterów, znaczników i specyfikatorów, które są udokumentowane w java.util.Formatter

oto podstawowy przykład:

int i = 461012;System.out.format("The value of i is: %d%n", i);

%d określa, że pojedyncza zmienna jest liczbą dziesiętną. %n jest niezależnym od platformy znakiem nowego wiersza. Wyjście to:

The value of i is: 461012

printfI format metody są przeciążone., Każda z nich ma wersję o następującej składni:

public PrintStream format(Locale l, String format, Object... args)

aby wydrukować liczby w systemie Francuskim (gdzie zamiast miejsca dziesiętnego w reprezentacji liczb zmiennoprzecinkowych w języku angielskim używany jest przecinek), na przykład:

przykład

poniższa tabela zawiera listę konwerterów i znaczników, które są używane w przykładowym programie, TestFormat.java, który następuje po tabeli.,

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 data& konwersja czasu—pełna nazwa miesiąca specyficzna dla danego regionu.
td, te a data& konwersja czasu—2-cyfrowy dzień miesiąca. td ma wiodące zera w razie potrzeby, te nie.
ty, tY a data& konwersja czasu—ty = 2-cyfrowy rok, tY = 4-cyfrowy rok.
tl a data& konwersja czasu—godzina w 12-godzinnym zegarze.,
tM a data& konwersja czasu—minuty w 2 cyfrach, z wiodącymi zerami w razie potrzeby.
tp a data& konwersja czasu—specyficzne dla locale am / pm (małe litery).
tm a data& konwersja czasu—miesiące w 2 cyfrach, z wiodącymi zerami w razie potrzeby.,
tD A date & time conversion—date 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 dziesięć znaków o szerokości, z prawym uzasadnieniem, z trzema miejscami po przecinku.

poniższy program pokazuje niektóre formatowanie, które można zrobić z format. Wyjście jest pokazane w podwójnych cudzysłowach w osadzonym komentarzu:

Uwaga: dyskusja w tej sekcji obejmuje tylko podstawy metodformat Iprintf. Więcej szczegółów można znaleźć w Basic I/O w sekcji Essential trail, na stronie „formatowanie”.,
używanieString.format do tworzenia łańcuchów jest pokryte łańcuchami.

Klasa DecimalFormat

możesz użyć klasy java.text.DecimalFormat do kontrolowania wyświetlania początkowych i końcowych zer, przedrostków i przyrostków, separatorów grupowania (tysięcy) i separatora dziesiętnego. DecimalFormat oferuje dużą elastyczność w formatowaniu liczb, ale może sprawić, że Twój kod będzie bardziej złożony.,

poniższy przykład tworzy obiektDecimalFormat,myFormatter, przekazując łańcuch wzorca do konstruktoraDecimalFormat., Metoda format(), która DecimalFormat dziedziczy z NumberFormat, jest następnie wywoływana przez myFormatter—przyjmuje double wartość jako argument i zwraca sformatowaną liczbę w łańcuchu znaków:

oto przykładowy program, który ilustruje użycie DecimalFormat:

wyjście to:

123456.789 ###,###.### 123,456.789123456.789 ###.## 123456.79123.78 000000.000 000123.78012345.67 $###,###.### $12,345.67

poniższa tabela wyjaśnia każdą linię wyjścia.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *