2009-11-10 18 views
104

Sto cercando di aggiungere un segno di percentuale effettiva in una dichiarazione printf in Java e sto ottenendo l'errore:Java: letterale segno di percentuale in 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 

non riesco a capire come metti un vero segno di percentuale nel mio printf? Pensavo che usare \% per scappare potesse funzionare, ma non lo è.

Qualche idea?

risposta

158

Il segno di percentuale è fuggito con un segno di percentuale:

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

Il complete syntax si può accedere in sun's java docs. Questa informazione particolare si trova nella sezione Conversions del primo collegamento.

Il motivo per cui il compilatore genera un errore è che solo una quantità limitata di characters può seguire una barra rovesciata. % non è un carattere valido.

81

Fuggito segno di percentuale è il doppio per cento (%%):

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

È possibile utilizzare StringEscapeUtils da Apache Commons Logging utilità o la fuga manualmente utilizzando il codice per ogni carattere.

+0

Utilizzare 'StringEscapeUtils' da' commons-text', poiché quello da 'commons-lang3' è deprecato. –

Problemi correlati