Java: Literales Prozentzeichen in der printf-Anweisung


138

Ich versuche, einer printf-Anweisung in Java ein tatsächliches Prozentzeichen hinzuzufügen, und erhalte folgende Fehlermeldung:

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

Ich kann nicht herausfinden, wie ich ein tatsächliches Prozentzeichen in meinen Ausdruck einfügen soll. Ich dachte, es würde funktionieren, wenn man \% verwendet, um zu entkommen, aber das ist es nicht.

Irgendwelche Ideen?

Antworten:


197

Das Prozentzeichen wird mit einem Prozentzeichen maskiert:

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

Auf die vollständige Syntax kann in Java-Dokumenten zugegriffen werden . Diese speziellen Informationen befinden sich im Abschnitt Conversionsdes ersten Links.

Der Grund, warum der Compiler einen Fehler generiert, besteht darin, dass einem Backslash möglicherweise nur eine begrenzte Anzahl von Zeichen folgt. %ist kein gültiges Zeichen.


102

Das Zeichen für entgangenes Prozent ist doppeltes Prozent (%%):

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

2

Sie können StringEscapeUtils aus dem Apache Commons Logging-Dienstprogramm verwenden oder manuell mit Code für jedes Zeichen maskieren.


Sollte StringEscapeUtilsvon verwenden commons-text, da der von commons-lang3veraltet ist.
Eric Wang
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.