web-dev-qa-db-ja.com

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に実際のパーセント記号を入れる方法がわかりませんか? \%を使用してエスケープすることはできますが、そうではありません。

何か案は?

121
Domenic

パーセント記号は、パーセント記号を使用してエスケープされます。

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

完全な構文Java docs でアクセスできます。この特定の情報は、最初のリンクのConversionsセクションにあります。

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

182
soulmerge

エスケープされたパーセント記号は2パーセント(%%)です。

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

Apache Commons LoggingユーティリティからStringEscapeUtilsを使用するか、各文字のコードを使用して手動でエスケープできます。

2