我想把特殊字符,括号('('和')')和撇号(')放在枚举中。
我有这个:
private enum specialChars{
"(", ")", "'"
}
但它不起作用。 Java说了一些关于无效令牌的事情。 我该如何解决这个问题?
Grtz me.eatCookie();
答案 0 :(得分:19)
你可以这样做:
private enum SpecialChars{
COMMA(","),
APOSTROPHE("'"),
OPEN_PAREN("("),
CLOSE_PAREN(")");
private String value;
private SpecialChars(String value)
{
this.value = value;
}
public String toString()
{
return this.value; //will return , or ' instead of COMMA or APOSTROPHE
}
}
使用示例:
public static void main(String[] args)
{
String line = //..read a line from STDIN
//check for special characters
if(line.equals(SpecialChars.COMMA)
|| line.equals(SpecialChars.APOSTROPHE)
|| line.equals(SpecialChars.OPEN_PAREN)
|| line.equals(SpecialChars.CLOSE_PAREN)
) {
//do something for the special chars
}
}
答案 1 :(得分:4)
枚举常量必须是有效的Java标识符。如果您希望以不同的方式显示,则可以覆盖toString
。
public enum SpecialChars {
OPEN_PAREN {
public String toString() {
return "(";
}
},
CLOSE_PAREN {
public String toString() {
return ")";
}
},
QUOTE {
public String toString() {
return "'";
}
}
}
答案 2 :(得分:3)
你应该使用这样的东西:
private enum SpecialChars {
LEFT_BRACKET('('),
RIGHT_BRACKET(')'),
QUOTE('\'');
char c;
SpecialChars(char c) {
this.c = c;
}
public char getChar() {
return c;
}
}