web-dev-qa-db-fra.com

Java: pourcentage littéral de déclaration printf

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

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 insérer un signe de pourcentage réel dans mon printf? Je pensais qu'utiliser \% pour s'échapper fonctionnerait, mais ce n'est pas le cas.

Des idées?

121
Domenic

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 documents Java . Cette information particulière se trouve dans la section Conversions du premier lien.

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

182
soulmerge

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

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

Vous pouvez utiliser StringEscapeUtils à partir de l'utilitaire Apache Commons Logging ou vous échapper manuellement en utilisant du code pour chaque caractère.

2
Harkamwaljeet Singh