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

Спецификаторы %n и %%

Спецификаторы %n и %% отличаются от других спецификаторов формата тем, что они не связаны с аргументами. Они представляют собой ESC-последовательности, вставляющие символ в поток вывода. Спецификатор %n вставляет символ перехода на новую строку, а спецификатор %% — знак процента. Ни один из этих символов нельзя вставить непосредственно в строку формата. Конечно, Вы также можете использовать стандартную ESC-последовательность \n для внедрения символа перехода на новую строку.

В листинге 9.4 показано применение спецификаторов %n и %%.

Листинг 9.4. Демонстрация применения спецификаторов %n и %%.

import java.util.*;

class FormatDemo3 {

public static void main(String args[]) {

Formatter fmt = new Formatter();

fmt.format("Copying file%nTransfer is %d%% complete", 88);

System.out.println(fmt);

}

}

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

Copying file

Transfer is 88% complete

Задание минимальной ширины поля

Целое число, стоящее между знаком % и символом преобразования формата в спецификаторе, действует как спецификатор минимальной ширины поля (minimum field width specifier). Он заполняет вывод пробелами для того, чтобы аргумент достиг заданной минимальной длины. Если строка или число длиннее заданного минимума, они все равно будут отображены полностью. По умолчанию заполнение выполняется пробелами. Если Вы хотите заполнить поле нулями, поместите 0 перед спецификатором ширины поля. Например, спецификатор %05d дополнит слева число, состоящее меньше чем из пяти цифр, нулями так, чтобы его общая длина равнялась пяти цифрам. Спецификатор ширины поля может применяться со всеми спецификаторами формата за исключением спецификатора %n.

В листинге 9.5 показано применение спецификатора минимальной ширины поля, добавленного к спецификатору формата %f.

Листинг 9.5. Демонстрация применения спецификатора минимальной ширины поля

import java.util.*;

class FormatDemo4 {

public static void main(String args[]) {

Formatter fmt = new Formatter();

fmt.format("|%f|%n|%12f|%n|%012f|",

10.12345, 10.12345, 10.12345);

System.out.println(fmt);

}

}

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

|10.123450|

| 10/123450|

|00010.123450|

В первой строке показана текущая ширина поля для вывода числа 10.123450. Во второй строке отображается это же число в поле с 12-символьной шириной. В третьей строке выведено то же число в поле шириной 12 символов и дополнено ведущими нулями для заполнения ширины поля.

Спецификатор минимальной длины поля часто используется для выравнивания колонок при формировании таблиц. В листинге 9.6 создается таблица квадратов и кубов для чисел от 1 до 10.

Листинг 9.6. Создание таблицы квадратов и кубов

import java.util.*;

class FieldWidthDemo {

public static void main(String args[]) {

Formatter fmt;

for(int i=1; i <= 10; i++) {

fmt = new Formatter();

fmt.format("%4d %4d %4d", i, i*i, i*i*i);

System.out.println(fmt);

}

}

}

Далее приведен вывод таблицы, созданной программой, из листинга 9.6:

1

1

1

2

4

8

3

9

27

4

16

64

5

25

125

6

36

216

7

49

343

8

64

512

9

81

729

10

100

1000