2009-11-10 4 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 syntaxsun's java docsでアクセスすることができます。この特定の情報は、最初のリンクのConversionsセクションにあります。

コンパイラがエラーを生成する理由は、限定された量のcharactersがバックスラッシュに続く可能性があるためです。 %は有効な文字ではありません。

81

エスケープパーセント記号は、二重パーセント(%%)である:

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

ユーティリティをログにApache CommonsのからStringEscapeUtilsを使用するか、各文字のコードを使用して手動で脱出することができます。

+0

'commons-text'から' StringEscapeUtils'を使うべきです。なぜなら 'commons-lang3'のものは非難されているからです。 –