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 に答える