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первой ссылки.

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

soulmerge
источник
102

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

System.out.printf("2 out of 10 is %d%%", 20);
Клетус
источник
2

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

Харкамвалджит Сингх
источник
Следует использовать StringEscapeUtilsfrom commons-text, так как он commons-lang3устарел.
Эрик Ван