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?

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.


105

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

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

2

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


Powinien używać StringEscapeUtilsfrom commons-text, ponieważ ten from commons-lang3jest przestarzały.
Eric Wang
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.