10

我有一个美国所有州的枚举列表,如下所示:

public enum State
{ AL, AK, AZ, AR, ..., WY }

在我的测试文件中,我将从包含状态的文本文件中读取输入。由于它们是字符串,我如何将它与枚举列表的值进行比较,以便将值分配给我设置为的变量:

private State state;

我知道我需要通过枚举列表。但是,由于这些值不是字符串类型,如何比较呢?这就是我盲目输入的内容。我不知道它是否正确。

public void setState(String s)
{
    for (State st : State.values())
    {
        if (s == State.values().toString())
        {
           s = State.valueOf();
           break;
        }
    }
}
4

3 回答 3

26

尝试这个

public void setState(String s){
 state = State.valueOf(s);
}

如果“s”值与任何“State”不匹配,您可能想要处理可能引发的 IllegalArgumentException

于 2012-10-01T23:37:03.067 回答
8

使用.name()方法。喜欢st.name()。例如State.AL.name()返回字符串“AL”。

所以,

if(st.name().equalsIgnoreCase(s)) {

应该管用。

于 2012-10-01T23:36:04.533 回答
2

将枚举与字符串进行比较

for (Object s : State.values())
    {
            if (theString.equals(s.toString()))
        {
            // theString is equal State object

        }
    }
于 2012-10-01T23:47:10.880 回答