Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Герберт Шилдт. Java 2, v5.0 (Tiger). Новые возм...doc
Скачиваний:
0
Добавлен:
03.12.2019
Размер:
1.21 Mб
Скачать

Применение метода printf() языка Java

Хотя с технической точки зрения нет ничего неправильного в непосредственном использовании класса Formatter, как было сделано в предыдущих примерах, при формировании вывода на консоль, версия Java 2 5.0 прелагает более удобную альтернативу: метод printf (). Этот метод автоматически использует объект типа Formatter для создания форматированной строки. Затем она выводится как строка в стандартный поток вывода по умолчанию на консоль. Метод printf () определен в классах PrintStream и PrintWriter.

В классе PrintStream у метода printf () две синтаксические формы записи:

PrintStream printf(String fmtString, Object...args)

PrintStream printf(Local loc, String fmtString, Object...args)

В первом варианте аргументы &rgs записываются в стандартный поток вывода в формате, заданном в параметре fmtString, используя региональные настройки (locale), принятые по умолчанию. Во втором варианте Вам предлагается задать региональные настройки. Оба варианта возвращают вызывающий объект типа Printstream. Поскольку system.out — объект типа PrintStream, Вы можете вызывать метол printf () прямо для объекта system.out.

Варианты метода printf () для класса Printwriter приведены в следующих строках:

PrintWriter printf(String fmtString, Object...args)

PrintWriter printf(Local loc, String fmtString, Object...args)

Они выполняются точно так же, как и в классе printstream за исключением того, что возвращают объект типа PrintWriter.

В листинге 9.11 приведен пример программы, использующей метод printf() для вывода числовых значений в различных форматах. В прошлом подобное форматирование требовало существенной работы. С появлением метода printf () оно превратилось в легко решаемую задачу.

Листинг 9.11.Демонстрация применения метода printf()

class PrintfDemo {

public static void main(String args[]) {

System.out.println("Here are some numeric values " +

"in different formats.\n");

System.out.printf("Various Integer formats: ");

System.out.printf("%d %(d %+d %05d\n", 3, -3, 3, 3);

System.out.println();

System.out.printf("Default floating-point format: %f\n",

1234567.123);

System.out.printf("Floating-point with commas: %,f\n",

1234567.123);

System.out.printf("Negative floating-point default: %,f\n",

-1234567.123);

System.out.printf("Negative floating-point option: %,(f\n",

-1234567.123);

System.out.println();

System.out.printf("Line-up positive and negative values:\n");

System.out.printf("% ,.2f\n% ,.2f\n",

1234567.123, -1234567.123);

}

}

Далее приведен вывод результатов программы из листинга 9.11:

Here are some numeric values in defferent formats.

Various Integer formats: 3 (3) +3

Default floating-point format: 1234567.123000 Floating-point with commas: 1,234,567.123000

Negative floating-point default: -1,234,567.123000 Negative floating-point option: (1,234,567.123000)

Line-up positive and negative values:

1, 234,567.123000

-1, 234,567.123000