Java: เครื่องหมายเปอร์เซ็นต์ตามตัวอักษรในคำสั่ง printf


141

ฉันกำลังพยายามเพิ่มเครื่องหมายเปอร์เซ็นต์จริงในคำสั่ง printf ใน Java และฉันได้รับข้อผิดพลาด:

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 ของฉันได้อย่างไร? ฉันคิดว่าการใช้ \% เพื่อหลีกเลี่ยงมันจะได้ผล แต่ก็ไม่เป็นเช่นนั้น

ความคิดใด ๆ ?

คำตอบ:


200

เครื่องหมายเปอร์เซ็นต์ถูกหลีกเลี่ยงโดยใช้เครื่องหมายเปอร์เซ็นต์:

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

ไวยากรณ์เสร็จสมบูรณ์แล้วสามารถเข้าถึงได้ในเอกสารจาวา ข้อมูลนี้อยู่ในส่วนConversionsของลิงก์แรก

เหตุผลที่คอมไพลเลอร์สร้างข้อผิดพลาดคืออักขระจำนวน จำกัด เท่านั้นที่อาจตามหลังเครื่องหมายแบ็กสแลช %ไม่ใช่อักขระที่ถูกต้อง


105

เครื่องหมายเปอร์เซ็นต์ที่หลบหนีคือเปอร์เซ็นต์สองเท่า (%%):

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

2

คุณสามารถใช้ StringEscapeUtils จากยูทิลิตี้ Apache Commons Logging หรือ Escape ด้วยตนเองโดยใช้รหัสสำหรับแต่ละอักขระ


ควรใช้StringEscapeUtilsจากcommons-textเนื่องจากcommons-lang3เลิกใช้งานแล้ว
Eric Wang
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.