2009-11-10 20 views
104

Estoy intentando añadir una muestra real por ciento en una sentencia printf en Java y estoy consiguiendo el error:Java: signo de porcentaje literal en sentencia printf

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 encontrar la manera de poner un signo de porcentaje real en mi printf? Pensé que usar \% para escapar funcionaría, pero no es así.

¿Alguna idea?

Respuesta

158

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

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

El complete syntax se puede acceder en sun's java docs. Esta información particular se encuentra en la sección Conversions del primer enlace.

La razón por la cual el compilador está generando un error es que solo una cantidad limitada de characters puede seguir a una barra diagonal inversa. % no es un personaje válido.

81

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

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

Puede utilizar StringEscapeUtils de Apache Commons utilidad de registro o escapar manualmente utilizando el código para cada carácter.

+0

Debe usar 'StringEscapeUtils' de' commons-text', ya que el de 'commons-lang3' está en desuso. –

Cuestiones relacionadas