>我有一个美国所有州的枚举列表如下:
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;
}
}
}
试试这个
public void setState(String s){
state = State.valueOf(s);
}
您可能希望处理如果"s"值与任何"状态"不匹配时可能引发的 IllegalArgumentException。
使用.name()
方法。喜欢st.name()
.例如 State.AL.name()
返回字符串"AL"。
所以
if(st.name().equalsIgnoreCase(s)) {
应该工作。
将枚举与字符串进行比较
for (Object s : State.values())
{
if (theString.equals(s.toString()))
{
// theString is equal State object
}
}