Использование% n в качестве новой строки - PullRequest
0 голосов
/ 06 апреля 2020

в соответствии с рекомендациями, приведенными, например, в этом сообщении:
{ ссылка }

Лучше использовать% n в качестве независимого от ОС символа новой строки вместо \ \ и это проще, чем использовать System.lineSeparator ()

Однако эта функция не работает для меня:

\n:

System.out.println("foo\nbar");
>>>foo
>>>bar

работает как следует.

%n:

System.out.println("foo%nbar");
>>>foo%nbar

не интерпретируется.

Может кто-нибудь объяснить мне, почему %n не работает для меня? Возможно, он больше не поддерживается или я что-то упустил?

Ответы [ 2 ]

4 голосов
/ 06 апреля 2020

Java предоставляет вам константу System.lineSeparator(). Это сломает линию независимо от ОС, если вы используете println. Вы также можете просто использовать \n в строке, чтобы разбить строку, если вы просто играете с кодом. Это легко и быстро. Обратите внимание, что println просто печатает чистый текст на консоль.

Когда вы используете printf, вы фактически будете использовать java.util.Formatter для форматирования строки перед выводом на консоль, Все детали java.util.Formatter можно найти по ссылке (Java 8 документов): https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html

Итак, если вы хотите отформатировать строку с помощью println, вы сначала нужно отформатировать его, используя java.util.Formatter, например:

String formattedStr = String.format("%s = %d %n hello", "joe", 35);
System.out.println(formattedStr);

Где %s - строка, %d - целое число и %n разрыв строки (описано в ссылке на документацию выше).

printf - это просто ярлык вышеупомянутых 2 строк кода, где String.format уже находится внутри реализации printf.

System.out.printf("%s = %d %n hello", "joe", 35);

И вы также можете использовать \n в строке printf:

System.out.printf("%s = %d \n hello", "joe", 35);

Наконец, вам важно понять, что в реальном проекте вы всегда должны использовать System.lineSeparator() вместо \n, если вы не используете java.util.FormatterFormatter используйте %n). Кроме того, вы никогда не должны использовать System.out.* для реальных проектов. Вместо этого используйте каркас регистрации.

3 голосов
/ 06 апреля 2020

%n интерпретируется как String как System.out.println().

Чтобы использовать %n, вы должны использовать System.out.printf(), как в примере, который вы опубликовали.

Примечание : \n интерпретируется как newline как System.out.printf().

...