2009-11-10 8 views
104

Ich versuche, ein tatsächliches Prozent-Zeichen in eine printf-Anweisung in Java hinzuzufügen und ich erhalte die Fehlermeldung:Java: Wörtliche Prozentzeichen in printf Anweisung

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 man ein echtes Prozentzeichen in meinen Printf einfügen? Ich dachte, \% zu verwenden, um zu entkommen, würde funktionieren, aber es ist nicht.

Irgendwelche Ideen?

Antwort

158

Das Prozentzeichen wird mit einem Prozentzeichen entkommen:

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

Die complete syntax kann in sun's java docs zugegriffen werden. Diese spezielle Information befindet sich im Abschnitt Conversions der ersten Verbindung.

Der Grund, dass der Compiler einen Fehler generiert, ist, dass nur eine begrenzte Anzahl von characters einem Backslash folgen kann. % ist kein gültiges Zeichen.

81

Entkommen Prozentzeichen ist doppelt Prozent (%%):

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

Sie StringEscapeUtils von Apache Commons können Dienstprogramm Logging oder manuell für jedes Zeichen mit dem Code entkommen.

+0

Sollte 'StringEscapeUtils' von' commons-text' verwendet werden, da der von 'commons-lang3' veraltet ist. –