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

时间:2009-11-10 14:41:16

标签: java printf escaping

我正在尝试在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中添加实际的百分号?我认为使用\%来逃避它会起作用,但事实并非如此。

有什么想法吗?

4 个答案:

答案 0 :(得分:178)

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

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

可以在complete syntax中访问java docs。此特定信息位于第一个链接的Conversions部分。

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

答案 1 :(得分:92)

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

检查下面的代码---

public class Printter {
   public static void main(String[] args) {
      System.out.println("" + "%");
   }
}