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?

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.


102

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

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

2

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


Harus digunakan StringEscapeUtilsdari commons-text, karena yang dari commons-lang3sudah usang.
Eric Wang
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.