从枚举中获取价值,如何?

时间:2014-05-09 01:30:20

标签: java enums

我用2个值(项目ID,项目exp)

创建了一个枚举

如何从枚举中提取exp值?

这是enum;

public enum boneData {

            NORMAL_BONE(526, 5),
            BIG_BONE(532, 15),
            BABYDRAGON_BONE(534, 30),
            DRAGON_BONE(536, 72),
            DAGGONOTH_BONE(6729, 125);

            private int boneId;
            public double boneExp;

            boneData(int boneId, int boneExp) {
                    this.boneId = boneId;
                    this.boneExp = boneExp;
            }

            public int boneId() {
                    return boneId();
            }

            public int boneExp() {
                    return boneExp();
            }
    }

这是数组的方法;

   public int getExp(int id) {
            for (int j = 0; j < bonesExp.length; j++) {
                    if (bonesExp[j][0] == id)
                            return bonesExp[j][1];
            }
            return 0;
    }

如何将其转换为枚举,谢谢!

2 个答案:

答案 0 :(得分:1)

只需在您感兴趣的枚举对象上调用boneExp()方法即可。那就是它。

if (bonesExp.getId() == id)
   return bonesExp.boneExp();
}

要搜索整个枚举集合,请使用其values()方法返回所有枚举项的数组:

for (boneData myBone : boneData.values()) {
    if (myBone.getId() == id)
       return myBone.boneExp();
    }
}

请注意,类之类的枚举名称应以大写字母开头。那么更好:

public enum BoneData {
  // ... etc
}

和搜索:

public int getExp(int id) {
    for (BoneData myBone : BboneData.values()) {
        if (myBone.getId() == id)
           return myBone.boneExp();
        }
    }
    // either return a default value or throw exception here
}

答案 1 :(得分:0)

为什么不仔细看看你的数组方法

       " for (int j = 0; j < bonesExp.length; j++) "

您的声明中没有找到的地方&#34; bonesExp&#34;而我注意到#34; boneExp&#34; 因此,即使您在尝试调用bonesExp()而不是boneExp()时也会出现错误。