Java中的用户定义枚举元素方法/炉石文字游戏/

Java中的用户定义枚举元素方法/炉石文字游戏/,java,enums,Java,Enums,我正在用Java做一个炉石文字游戏,我一直在为玩家选择英雄/等级[x]。我有一个英雄类,它包含一个等级枚举{法师、圣骑士、牧师等…},我有一个游戏类,它可以访问带有Hero.Rank.VALUE的等级枚举。另外,这也是重要的一点,我有一个TextView类,它要求用户选择带有int的英雄类。问题是,int不能转换为Rank,我想知道一种通过用户输入设置玩家等级的适当方法 我使用的是MVC结构,因此在TextView中执行英雄排名请求非常重要。一种可能性是使用带有参数的枚举。 该参数将是从用户返回

我正在用Java做一个炉石文字游戏,我一直在为玩家选择英雄/等级[x]。我有一个
英雄
类,它包含一个等级枚举{法师、圣骑士、牧师等…},我有一个
游戏
类,它可以访问带有Hero.Rank.VALUE的
等级
枚举。另外,这也是重要的一点,我有一个TextView类,它要求用户选择带有int的英雄类。问题是,int不能转换为Rank,我想知道一种通过用户输入设置玩家等级的适当方法


我使用的是MVC结构,因此在TextView中执行英雄排名请求非常重要。

一种可能性是使用带有参数的枚举。 该参数将是从用户返回的关联int

enum Rank {
    MAGE(0), PALADIN(1), PRIEST(2), ...;

    private int value;

    Rank(int value) {
        this.value = value;
    }

    int getValue() {
        return this.value;
    }
}
然后,通过迭代
Rank.values()
并检查值是否与用户给定的int匹配,可以找到正确的枚举大小写。 或者可以使用哈希表按枚举键的值查找它们,如中所述


另一个更简单的方法是使用枚举的
ordinal()
方法,如中所述,但如果枚举的值与其序号不匹配,则此方法不起作用。

您知道
switch
语句吗?如果这些方法不起作用,请查看
Enum
接口(我想?)的文档,看看这些方法是否适用。是的,实际上我没有尝试过,因为在Java中,Enum是他自己类型的对象,所以我放弃了切换的可能性。实际上,我在几个小时前就解决了这个问题,我所做的是使用Enum values()方法将枚举转换为数组,该方法返回一个枚举元素数组,然后在这里使用开关,将索引作为参数,从而实现用户可以控制枚举元素的选择。。。你接受了我的第二个建议,看了文件?(作为记录,
switch
es与
Enum
s一起工作。试试看:D)好的,是的,但不是作为int,我在一个方法中做了一个切换,该方法以Enum为参数,然后通过Enum进行切换,但检查了大小写,作为我创建它时给出的值(例如method(Card.Rank classEnum)…switch(classEnum)…case MAGE:…break;…)是的,实际上我已经尝试了values()方法,它按照我想要的方式工作,只需给出一个int作为参数,从而获得数组的索引。