0

いくつかの処理を行う必要がある音楽記号の画像がたくさんあり、それぞれのファイル名に対応する整数コードを取得する必要があります。23 の可能なファイル名文字列と 23 の整数コードがあり、異なるディレクトリの下に同じ名前の画像が多数あります。

私がこれまでに持っている解決策を以下に(省略して)示します。intおよび定数の負荷を定義してから、変換を行うためStringの巨大な一連のifステートメントであるメソッドを作成しました。

同じ効果を達成するためのより良い方法は何でしょうか? 私がやった方法は本当にひどいようです!何らかの を使用することを考えましMapたが、最適な方法がわかりませんでした。

public class Symbol {
    public static final int TREBLE_CLEF = 0;
    public static final int BASS_CLEF = 1;
    public static final int SEMIBREVE = 2;
    // ...

    public static final String S_TREBLE_CLEF = "treble-clef";
    public static final String S_BASS_CLEF = "bass-clef";
    public static final String S_SEMIBREVE = "semibreve";
    // ...

    public static int stringCodeToIntCode(String strCode) {
        if (strCode == S_TREBLE_CLEF) {
            return TREBLE_CLEF;
        } else if (strCode == S_BASS_CLEF) {
            return BASS_CLEF;
        } else if (strCode == S_SEMIBREVE) {
            return SEMIBREVE;
        } //...

        else {
            return -1;
        }
    }
}
4

3 に答える 3

5

String 定数とその値を持つことができるEnumを探していると思います。

例:

public enum YourEnumClass{
    STRING_CONST (5),
    STRING_CONST2 (7),
    .....
     //constructor
     //getValue() method
}

詳細については、リンクされたチュートリアルを参照してください。

于 2012-12-14T16:25:42.517 に答える
1
enum StringToInt{
  TREBLE_CLEF(0),

  ......
}

列挙型は行く方法です。

もう一つの例:

public enum Color {
 WHITE(21), BLACK(22), RED(23), YELLOW(24), BLUE(25);

 private int code;

 private Color(int c) {
   code = c;
 }

 public int getCode() {
   return code;
 }
于 2012-12-14T16:26:54.610 に答える
0

ハッシュマップはどうですか

HashMap<String,Integer> hm=new HashMap<String,Integer();
hm.put("treble-clef",0);
//rest

これを使用して取得します

int value=hm.get("treble-clef");
于 2012-12-14T16:42:06.230 に答える