Java: letterale segno di percentuale nell'istruzione printf


138

Sto cercando di aggiungere un segno di percentuale effettivo in un'istruzione printf in Java e sto ottenendo l'errore:

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 inserire un segno di percentuale reale nel mio printf? Ho pensato che usare \% per scappare avrebbe funzionato, ma non lo è.

Qualche idea?

Risposte:


197

Il segno di percentuale viene eliminato utilizzando un segno di percentuale:

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

È possibile accedere alla sintassi completa nei documenti java . Queste informazioni particolari si trovano nella sezione Conversionsdel primo collegamento.

Il motivo per cui il compilatore sta generando un errore è che solo una quantità limitata di caratteri può seguire una barra rovesciata. %non è un personaggio valido.


102

Il segno di percentuale con escape è il doppio percento (%%):

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

2

Puoi usare StringEscapeUtils dall'utilità di registrazione di Apache Commons o scappare manualmente usando il codice per ogni personaggio.


Dovrebbe usare StringEscapeUtilsda commons-text, poiché quello da commons-lang3è deprecato.
Eric Wang,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.