Java - IF语句中的枚举类型

时间:2015-10-07 02:21:36

标签: java if-statement enums enumerated-types

所以使用我的基本代码我很好奇是否可以使用如下所示的if语句:

if (ScannerInput.equalsIgnoreCase(AllEnums)){
    System.out.println("Sample");
}

如果您理解我希望只有Enum的名称,例如它对所有值都是真的。如果可以,我该怎么做呢?

这是我的意思的一个例子:

import java.util.Scanner;

public class EnumTest {
    enum Weather {Sunny, Rainy, Snowy, Overcast, Stormy};

    public static void main (String[] args) {
        Scanner scan = new scanner(System.in);
        String userinput = nextLine;

        if (userinput.equalsIgnoreCase(Weather.all) // I wish for this to occur if any of the Weather enums are entered.
            System.out.println ("Working!");
        }
    }
}

3 个答案:

答案 0 :(得分:0)

嗯,我想我有点困惑,也许尝试这样的事情?

for(Test t:Test.values()){
    if(ScannerInput.equals(t)){
        System.out.println("Sample");
    }
}

答案 1 :(得分:0)

enum Color { RED, GREEN, BLUE }

String input = ...

try {
    Color c = Color.valueOf(input.trim().replace(' ', '_').toUpperCase());
    ...
} catch (IllegalArgumentException e) {
    ...
}

在你的情况下,你需要像apache commons这样的StringUtils.capitalize。或者使用大写只有枚举常量的约定。 (在java.awt.Color的情况下,他们无法决定并且也有所有小写字母版本。)

答案 2 :(得分:0)

您可以向enum-class添加一个检查值是否在该枚举中的方法:

public boolean contains(String s) {
    for (YourEnum yourEnum : values()) {
        return yourEnum.toString().equalsIgnoreCase(s);
    }
    return false;
}

这需要近乎完美的匹配,考虑到有人在控制台(或类似的)上输入值,这是不可靠的。