私は次のように米国のすべての州の列挙型リストを持っています:
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」の値がどの「State」とも一致しない場合にスローされる可能性のある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
}
}