2009-11-10 53 views
104

我想實際百分號添加到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中?我認爲使用\%來逃避它會起作用,但事實並非如此。

任何想法?

回答

158

百分號使用百分號轉義:

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

complete syntax可以sun's java docs訪問。此特定信息位於第一個鏈接的Conversions部分。

編譯器生成錯誤的原因是隻有有限數量的characters可能會出現反斜槓。 %不是一個有效的字符。

81

轉義百分號是雙百分比(%%):

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

可以使用StringEscapeUtils從Apache的百科全書測井工具或使用代碼對於每個字符手動逸出。

+0

應該從'commons-text'中使用'StringEscapeUtils',因爲'commons-lang3'中的一個已被棄用。 – 2017-12-15 10:14:09