从控制台获取枚举类型的输入

ojo*_*ifu 0 java enums

你如何从控制台获取enumJava 类型的输入?

我有这门课:

class enumTest {

  public enum Color {
    RED, BLACK, BLUE
  }

  BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
  Color color = input.readLine();

  public static void main (String[]args) {

  switch (color) {
    ...
Run Code Online (Sandbox Code Playgroud)

在这条线上,Color color = input.readLine();我收到一个错误消息:

incompatible types: String cannot be converted to Color
Run Code Online (Sandbox Code Playgroud)

我如何解决这个问题?

Jon*_*eet 5

每个枚举都有一个自动生成的静态valueOf方法来解析字符串。所以你可以使用:

String colorName = input.readLine();
Color color = Color.valueOf(colorName);
Run Code Online (Sandbox Code Playgroud)

但是,如果给定的名称没有任何相应的枚举值,这将引发异常。您可能想要创建一个Map<String, Color>(在内部Color或单独),以便您可以更优雅地处理此问题。