0

我有一堆音乐符号的图像,我需要对其进行一些处理,并且对于每个图像,我都需要获取与其文件名相对应的整数代码。有 23 个可能的文件名字符串和 23 个整数代码,并且在不同的目录下有许多同名的图像。

我到目前为止的解决方案在下面给出(缩写)。我刚刚定义了一个intString常量的负载,然后编写了一个方法,它只是一个巨大的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 回答