Java: буквальный знак процента в заявлении printf


138

Я пытаюсь добавить фактический знак процента в оператор printf на Java и получаю сообщение об ошибке:

lab1.java:166: illegal escape character
                System.out.printf("%s\t%s\t%1.2f\%\t%1.2f\%\n",ID,pattern,support,confidence);
                                                 ^
lab1.java:166: illegal escape character
                System.out.printf("%s\t%s\t%1.2f\%\t%1.2f\%\n",ID,pattern,support,confidence);
                                                          ^
2 errors

Я не могу понять, как поставить фактический знак процента в мой printf? Я думал, что использование \% для выхода из него сработает, но это не так.

Любые идеи?

Ответы:


197

Знак процента заменяется знаком процента:

System.out.printf("%s\t%s\t%1.2f%%\t%1.2f%%\n",ID,pattern,support,confidence);

Полный синтаксис можно получить в ява документации . Эта конкретная информация находится в разделе Conversionsпервой ссылки.

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


102

Экранированный знак процента - это двойной процент (%%):

System.out.printf("2 out of 10 is %d%%", 20);

2

Вы можете использовать StringEscapeUtils из утилиты Apache Commons Logging или выйти вручную, используя код для каждого символа.


Следует использовать StringEscapeUtilsfrom commons-text, так как он commons-lang3устарел.
Эрик Ван
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.