如何从控制台获取java中enum
类型的输入?
我有这堂课:
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) {
...
在这一行Color color = input.readLine();
我收到一条错误消息:
incompatible types: String cannot be converted to Color
我如何得到这个?
答案 0 :(得分:4)
每个枚举都有一个automatically generated静态valueOf
方法来解析字符串。所以你可以使用:
String colorName = input.readLine();
Color color = Color.valueOf(colorName);
但是,如果给定名称没有任何相应的枚举值,则会抛出异常。您可能希望创建Map<String, Color>
(在Color
内或单独创建),以便您可以更优雅地处理此问题。
答案 1 :(得分:1)
将读取行存储在String变量中,然后使用Enum类的valueOf方法将字符串转换为枚举实例。
color = Color.valueOf( input.readLine() );