Java: instruction printf de signe de pourcentage littéral

138

J'essaie d'ajouter un signe de pourcentage réel dans une instruction printf en Java et j'obtiens l'erreur:

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

Je n'arrive pas à comprendre comment mettre un signe de pourcentage réel dans mon printf? Je pensais qu'utiliser \% pour y échapper fonctionnerait, mais ce n'est pas le cas.

Des idées?

Domenic
la source

Réponses:

197

Le signe de pourcentage est échappé à l'aide d'un signe de pourcentage:

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

La syntaxe complète est accessible dans les documents java . Cette information particulière se trouve dans la section Conversionsdu premier lien.

La raison pour laquelle le compilateur génère une erreur est que seul un nombre limité de caractères peut suivre une barre oblique inverse. %n'est pas un caractère valide.

soulmerge
la source
102

Le signe de pourcentage échappé est le double de pourcentage (%%):

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

Vous pouvez utiliser StringEscapeUtils de l'utilitaire de journalisation Apache Commons ou échapper manuellement en utilisant le code pour chaque caractère.

Harkamwaljeet Singh
la source
Devrait utiliser StringEscapeUtilsfrom commons-text, puisque celui de commons-lang3est obsolète.
Eric Wang