Java: Литеральный процент входа в оператор printf


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

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

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

какие идеи?

3 110

3 ответа:

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

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

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

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

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

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

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