Spec-Zone .ru
спецификации, руководства, описания, API
След: Существенные Классы
Урок: Основной ввод-вывод
Раздел: Потоки ввода-вывода
Подраздел: Сканирование и Форматирование
Форматирование
Домашняя страница > Существенные Классы > Основной ввод-вывод

Форматирование

Потоковые объекты, которые реализуют форматирование, являются экземплярами также PrintWriter, символьный поток class, или PrintStream, поток байтов class.


Отметьте: единственное PrintStream объекты, в которых Вы, вероятно, будете нуждаться, System.out и System.err. (См. ввод-вывод из Командной строки для больше на этих объектах.), Когда Вы должны создать отформатированный поток вывода, инстанцировать PrintWriter, нет PrintStream.

Как весь байт и символьные потоковые объекты, экземпляры PrintStream и PrintWriter реализуйте стандартный набор write методы для простого байта и вывода символов. Кроме того, оба PrintStream и PrintWriter реализуйте тот же самый набор методов для того, чтобы преобразовать внутренние данные в отформатированный вывод. Обеспечиваются два уровня форматирования:

print и println Методы

Вызов print или println выводит единственное значение после преобразования значения, используя соответствующее toString метод. Мы можем видеть это в Root пример:

public class Root {
    public static void main(String[] args) {
        int i = 2;
        double r = Math.sqrt(i);
        
        System.out.print("The square root of ");
        System.out.print(i);
        System.out.print(" is ");
        System.out.print(r);
        System.out.println(".");

        i = 5;
        r = Math.sqrt(i);
        System.out.println("The square root of " + i + " is " + r + ".");
    }
}

Вот вывод Root:

The square root of 2 is 1.4142135623730951.
The square root of 5 is 2.23606797749979.

i и r переменные форматируются дважды: в первый раз используя код на перегрузке print, во второй раз кодом преобразования, автоматически сгенерированным компилятором Java, который также использует toString. Можно отформатировать любое значение этот путь, но Вы не имеете большого количества контроля над результатами.

format Метод

format метод форматирует многократные параметры, основанные на строке формата. Строка формата состоит из статического текста, встроенного со спецификаторами формата; за исключением спецификаторов формата, строка формата выводится неизменная.

Строки формата поддерживают много функций. В этом учебном руководстве мы только покроем некоторые основы. Для полного описания см. format string syntax в спецификации API.

Root2 пример форматирует два значения с синглом format вызов:

public class Root2 {
    public static void main(String[] args) {
        int i = 2;
        double r = Math.sqrt(i);
        
        System.out.format("The square root of %d is %f.%n", i, r);
    }
}

Вот вывод:

The square root of 2 is 1.414214.

Как эти три, используемые в этом примере, все спецификаторы формата начинаются с a % и конец с 1-или 2-символьным преобразованием, которое определяет вид отформатированного сгенерированного вывода. Эти три преобразования, используемые здесь:

Вот некоторые другие преобразования:

Есть много других преобразований.


Отметьте: 

За исключением %% и %n, все спецификаторы формата должны соответствовать параметр. Если они не делают, исключение выдается.

В языке программирования Java, \n escape всегда генерирует символ перевода строки (\u000A). Не использовать \n если Вы определенно не хотите символ перевода строки. Чтобы получить корректный разделитель строки для локальной платформы, использовать %n.


В дополнение к преобразованию спецификатор формата может содержать несколько дополнительных элементов, которые далее настраивают отформатированный вывод. Вот пример, Format, это использует каждый возможный вид элемента.

public class Format {
    public static void main(String[] args) {
        System.out.format("%f, %1$+020.10f %n", Math.PI);
    }
}

Вот вывод:

3.141593, +00000003.1415926536

Дополнительные элементы являются все дополнительными. Следующие данные показывают, как более длинный спецификатор разламывает на элементы.

Элементы спецификатора формата

Элементы Спецификатора Формата.

Элементы должны появиться в показанном порядке. Работая от права, дополнительные элементы:


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Сканирование
Следующая страница: ввод-вывод из Командной строки