Java: Dấu phần trăm bằng chữ trong câu lệnh printf


138

Tôi đang cố gắng thêm một dấu phần trăm thực tế vào một câu lệnh printf trong Java và tôi đang gặp lỗi:

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

Tôi không thể tìm ra cách đặt dấu phần trăm thực tế vào printf của mình? Tôi nghĩ rằng sử dụng \% để thoát nó sẽ hoạt động, nhưng không được.

Có ý kiến ​​gì không?

Câu trả lời:


197

Dấu phần trăm được thoát bằng dấu phần trăm:

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

Các cú pháp hoàn chỉnh có thể được truy cập trong tài liệu java . Thông tin cụ thể này nằm trong phầnConversions của liên kết đầu tiên.

Lý do trình biên dịch tạo ra lỗi là chỉ một số lượng ký tự giới hạn có thể theo dấu gạch chéo ngược. %không phải là một nhân vật hợp lệ.


102

Dấu phần trăm thoát là gấp đôi phần trăm (%%):

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

2

Bạn có thể sử dụng StringEscapeUtils từ tiện ích Ghi nhật ký Commons của Apache hoặc thoát thủ công bằng cách sử dụng mã cho mỗi ký tự.


Nên sử dụng StringEscapeUtilstừ commons-text, vì một từ commons-lang3bị phản đối.
Eric Wang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.