Java: signo de porcentaje literal en la declaración printf


138

Estoy tratando de agregar un signo de porcentaje real en una declaración printf en Java y obtengo 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 entender cómo poner un signo de porcentaje real en mi printf? Pensé que usar \% para escapar funcionaría, pero no lo es.

¿Algunas ideas?

Respuestas:


197

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

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

Se puede acceder a la sintaxis completa en java docs . Esta información particular se encuentra en la sección Conversionsdel primer enlace.

La razón por la que el compilador genera un error es que solo una cantidad limitada de caracteres puede seguir una barra invertida. %No es un personaje válido.


102

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

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

2

Puede usar StringEscapeUtils desde la utilidad de registro de Apache Commons o escapar manualmente usando el código de cada personaje.


Debería usar StringEscapeUtilsfrom commons-text, ya que el from commons-lang3está en desuso.
Eric Wang
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.