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

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

Любые идеи?

Ответ 1

Знак процента сбрасывается с помощью знака процента:

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

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

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

Ответ 2

Знак с несогласованным процентом равен удвоенному проценту (%%):

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

Ответ 3

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