20

特殊文字である括弧('('および')')とアポストロフィ(')を列挙型に入れたいと思います。

私はこれを持っていました:

private enum specialChars{
   "(", ")", "'"
}

しかし、それは機能しません。Javaは無効なトークンについて何かを言います。どうすればこれを解決できますか?

Grtz me.eatCookie();

4

3 に答える 3

25

次のようなことができます。

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
   }
}
于 2012-05-01T14:37:04.547 に答える
5

列挙定数は、有効な Java 識別子である必要があります。それらを別の方法で表示toStringしたい場合は、オーバーライドできます。

public enum SpecialChars {

    OPEN_PAREN {
        public String toString() {
            return "(";
        }
    },

    CLOSE_PAREN {
        public String toString() {
            return ")";
        }
    },

    QUOTE {
        public String toString() {
            return "'";
        }
    }

}
于 2012-05-01T14:35:10.117 に答える
2

代わりに次のようなものを使用する必要があります。

private enum SpecialChars {
   LEFT_BRACKET('('),
   RIGHT_BRACKET(')'),
   QUOTE('\'');

   char c;

   SpecialChars(char c) {
     this.c = c;
   }

   public char getChar() {
     return c;
   }
}
于 2012-05-01T14:37:53.227 に答える