Java:在printf语句中使用文字百分号

问题

我试图在Java中的printf语句中添加一个实际的百分号,我收到错误:

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 热门回答(165 赞)

百分号使用百分号进行转义:

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

可以通过sun's java docs访问complete syntax。此特定信息位于第一个链接的Conversions部分。

编译器生成错误的原因是只有有限数量的characters可能跟随反斜杠.%不是有效字符。


#2 热门回答(85 赞)

转义百分号为双倍百分比(%%):

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

#3 热门回答(2 赞)

你可以使用Apache Commons Logging实用程序中的StringEscapeUtils,也可以使用每个字符的代码手动转义。