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?

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.


102

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

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

2

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


Devrait utiliser StringEscapeUtilsfrom commons-text, puisque celui de commons-lang3est obsolète.
Eric Wang
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.