Java: dosłowny znak procentu w instrukcji printf

141

Próbuję dodać rzeczywisty znak procentu do instrukcji printf w Javie i otrzymuję błąd:

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

Nie mogę dowiedzieć się, jak umieścić rzeczywisty znak procentu w moim printf? Myślałem, że użycie \% do ucieczki zadziała, ale tak nie jest.

Jakieś pomysły?

Domenic
źródło

Odpowiedzi:

200

Znak procentu jest poprzedzony znakiem procentu:

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

Pełna składnia mogą być dostępne w docs java . Ta konkretna informacja znajduje się w sekcji Conversionspierwszego linku.

Powodem, dla którego kompilator generuje błąd, jest to, że tylko ograniczona liczba znaków może występować po ukośniku odwrotnym. %nie jest prawidłowym znakiem.

soulmerge
źródło
105

Znak procentu ucieczki to podwójny procent (%%):

System.out.printf("2 out of 10 is %d%%", 20);
cletus
źródło
2

Możesz użyć StringEscapeUtils z narzędzia Apache Commons Logging lub ręcznie uciec, używając kodu dla każdego znaku.

Harkamwaljeet Singh
źródło
Powinien używać StringEscapeUtilsfrom commons-text, ponieważ ten from commons-lang3jest przestarzały.
Eric Wang