Java: буквальный знак процента в выражении printf - PullRequest
118 голосов
/ 10 ноября 2009

Я пытаюсь добавить фактический знак процента в оператор 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? Я думал, что с помощью \% можно избежать этого, но это не так.

Есть идеи?

Ответы [ 3 ]

179 голосов
/ 10 ноября 2009

Знак процента экранируется с помощью знака процента:

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

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

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

92 голосов
/ 10 ноября 2009

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

System.out.printf("2 out of 10 is %d%%", 20);
2 голосов
/ 24 февраля 2017

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

...