Java: Tanda persen literal dalam pernyataan printf

138

Saya mencoba menambahkan tanda persen aktual ke pernyataan printf di Jawa dan saya mendapatkan kesalahan:

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

Saya tidak tahu bagaimana cara memasang tanda persen aktual ke printf saya? Saya pikir menggunakan \% untuk menghindarinya akan berhasil, tetapi ternyata tidak.

Ada ide?

Domenik
sumber

Jawaban:

197

Tanda persen diloloskan menggunakan tanda persen:

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

The sintaks lengkap dapat diakses di docs java . Informasi khusus ini ada di bagian Conversionstautan pertama.

Alasan kompiler menghasilkan kesalahan adalah karena hanya sejumlah karakter yang dapat mengikuti backslash. %bukan karakter yang valid.

soulmerge
sumber
102

Tanda Escaped persen adalah dua kali lipat (%%):

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

Anda dapat menggunakan StringEscapeUtils dari utilitas Apache Commons Logging atau melarikan diri secara manual menggunakan kode untuk setiap karakter.

Harkamwaljeet Singh
sumber
Harus digunakan StringEscapeUtilsdari commons-text, karena yang dari commons-lang3sudah usang.
Eric Wang