Java: Sinal de porcentagem literal na instrução printf

Eu estou tentando adicionar um sinal de porcentagem real em uma instrução printf em Java e estou recebendo o erro:

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 

Eu não consigo descobrir como colocar um sinal de porcentagem real no meu printf? Eu pensei que usar \% para escaping funcionaria, mas não é.

Alguma ideia?

O sinal de porcentagem é escapado usando um sinal de porcentagem:

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

A syntax completa pode ser acessada nos documentos java do sun . Essa informação específica está na seção Conversions do primeiro link.

O motivo pelo qual o compilador está gerando um erro é que apenas uma quantidade limitada de caracteres pode seguir uma barra invertida. % não é um caractere válido.

O sinal de porcentagem escapa é de dois por cento (%%):

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

Você pode usar StringEscapeUtils do utilitário Apache Commons Logging ou escaping manualmente usando o código para cada caractere.