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 або втекти вручну, використовуючи код для кожного символу.


Потрібно використовувати StringEscapeUtilsз commons-text, оскільки той, з якого commons-lang3є застарілим.
Ерік Ван
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.