Java: Porcentaje literal iniciar sesión declaración printf


Estoy tratando de agregar un signo de porcentaje real en una instrucción printf en Java y estoy obteniendo el error:

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

¿No puedo averiguar cómo poner un signo de porcentaje real en mi printf? Pensé que usar \% para escapar funcionaría, pero no lo es.

¿Alguna idea?

Author: Qix, 2009-11-10

3 answers

El signo de porcentaje se escapa usando un signo de porcentaje:

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

La sintaxis completa se puede acceder en java docs de sun. Esta información en particular se encuentra en la sección Conversions del primer enlace.

La razón por la que el compilador está generando un error es que solo una cantidad limitada de caracteres puede seguir una barra invertida. % no es un carácter válido.

 168
Author: soulmerge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-10 14:57:49

El signo de porcentaje escapado es el doble por ciento (%%):

System.out.printf("2 out of 10 is %d%%", 20);
 88
Author: cletus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-23 14:47:09

Puede usar StringEscapeUtils de Apache Commons Logging utility o escape manualmente usando código para cada carácter.

 2
Author: Harkamwaljeet Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-24 19:47:49