关于Java:一次使用字符串并比较多个枚举类型

Take string and compare to multiple enum types all at once

本问题已经有最佳答案,请猛点这里访问。

我真的需要帮助。

如果我有单独的类,我们称它为filetype.java,它看起来如下:

1
2
3
4
 public enum FileType
 {
     JPG,GIF,PNG,BMP,OTHER
 }

然后我从用户那里获取一个字符串,称之为inputstring,如何用最少量的代码将"inputstring"与每个枚举值进行比较?

编辑:以下是我的尝试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    System.out.print("Please enter your photo's file type. It must be: JPG, GIF, PNG, BMP, or OTHER");
    typeInput = kb.nextLine();

    boolean inputMatches = false;

    while(inputMatches == false)
    {
        System.out.print("Invalid input. Please enter your photo's file type. It must be: JPG, GIF, PNG, BMP, or OTHER");

        if(typeInput.equalsIgnoreCase(FileType.values()))
        {
            inputMatches = true;
        }
    }

我很清楚我可以将单个变量设置为与枚举值相同的字符串。我也知道我可以对每个值使用.valueOf()


您可以将输入转换为枚举

1
2
3
4
5
6
7
8
9
System.out.print("Please enter your photo's file type. It must be: JPG, GIF, PNG, BMP, or OTHER");
boolean typeInput = kb.nextLine();

inputMatches = true;
try{
    FileType fileType = FileType.valueOf(inputString.toUpperCase().trim());
}catch (IllegalArgumentException e) {
    inputMatches = false;
}