Как печатать несколько инструкций System.out.printf в одной строке? [Дубликат]

Здесь вы - рабочий стек:

Некоторые предыдущие примечания:

1) Запустить sudo Xvfb: 10 -ac & amp;

2) Запустить экспорт DISPLAY =: 10

3) Запустить java -jar "YOUR_PATH_TO / selenium-server-standalone-2.53.1.jar" -Dwebdriver.chrome.driver = "YOUR_PATH_TO / chromedriver.2.27 "-Dwebdriver.chrome.whitelistedIps =" localhost "

81
задан Andreas Fester 13 June 2016 в 11:29
поделиться

8 ответов

Из быстрого google:

Существует также один спецификатор, который не соответствует аргументу. Это «% n», который выводит разрыв строки. В некоторых случаях также можно использовать «\n», но поскольку «% n» всегда выводит правильный разделитель строк для конкретной платформы, он переносится по платформам, тогда как «\n» - нет.

Пожалуйста, обратитесь к https://docs.oracle.com/javase/tutorial/java/data/numberformat.html

Исходный источник

114
ответ дан Dhwaneel 18 August 2018 в 06:34
поделиться
  • 1
    Где "правильный разделитель строк" в значительной степени произвольно на основе используемого контекста. – user2864740 15 February 2014 в 00:51
  • 2
    @ user2864740 Это правда, он не выводит правильный разделитель строк для конкретной платформы, но current . – Hauke Ingmar Schmidt 13 April 2014 в 13:09
  • 3
    ммм, что это значит? – Kalpesh Soni 27 March 2018 в 17:11
  • 4
    Я считаю, что он использует ту, что для текущей ОС, в которой он работает, но если он работает в Linux и выводит код для окон, возможно, это не то, что вам нужно. Я не уверен, что другие два комментатора могли иметь в виду. – Bill K 27 March 2018 в 17:19

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

Поэтому используйте \n, когда вы уверены, что вам нужен символ \u000A linefeed, например, в сети. Во всех других ситуациях используйте %n

4
ответ дан Fathah Rehman P 18 August 2018 в 06:34
поделиться

Предупреждение: если вы используете код NETWORKING, вы можете предпочесть определенность\n, в отличие от% n, которая может отправлять разные символы по сети, в зависимости от того, на какой платформе она работает.

13
ответ дан George Forman 18 August 2018 в 06:34
поделиться

%n является переносимым на платформах \n.

См. синтаксис строки форматирования в справочной документации :

'n' разделитель строк. Результатом является разделитель строк в конкретной платформе

24
ответ дан Gregory Pakosz 18 August 2018 в 06:34
поделиться

«Правильно» зависит от того, что именно вы пытаетесь сделать.

\n всегда даст вам конец строки «unix style». \r\n всегда будет давать вам строку «dos style». % n даст вам строку, заканчивающуюся для платформы, на которой вы работаете

C, обрабатывает это по-другому. Вы можете открыть файл в режиме «текст» или «двоичный». Если вы откроете файл в двоичном режиме,\n даст вам окончание строки «unix style», а «\r\n» даст вам строку «dos style». Если вы откроете файл в «текстовом» режиме в системе dos / windows, тогда, когда вы пишете\n, код обработки файлов преобразует его в\r\n. Таким образом, открыв файл в текстовом режиме и используя\n, вы получите окончательную строку конкретной платформы.

Я могу понять, почему дизайнеры java не захотели реплицировать взломанные идеи C относительно «текстовых» и «двоичных» файловых режимов.

7
ответ дан Peter Green 18 August 2018 в 06:34
поделиться
Спецификатор формата

% n - это разделитель строк, который переносится через операционные системы. Однако он не может использоваться в качестве аргумента для функций System.out.print или System.out.println.

Рекомендуется использовать эту новую версию разделителя строк выше\n.

0
ответ дан Piyush P 18 August 2018 в 06:34
поделиться

Хотя \n является верным символом новой строки для систем на основе Unix, другие системы могут использовать разные символы для представления конца строки. В частности, система Windows использует \r\n и ранние системы MacOS, используемые \r.

Используя %n в вашей строке формата, вы говорите Java, чтобы использовать значение, возвращенное System.getProperty("line.separator"), которое является разделителем строк для текущей системы.

21
ответ дан Stefan van den Akker 18 August 2018 в 06:34
поделиться

Обратите внимание, что эти ответы верны только при использовании объектов System.out.printf() или System.out.format() или Formatter. Если вы используете %n в System.out.println(), он просто произведет %n, а не новую строку.

2
ответ дан user1677663 18 August 2018 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: