关于java:如何将用户在对话框(JOptionPane)中键入的字符串转换为枚举?

How to convert a string that a user typed in a dialog box (JOptionPane) into a enum?

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

我有一份性别清单。

1
2
3
4
5
6
7
8
9
10
11
12
13
public enum Gender {
  Male("M"), Female("F");
  private String value;

  Gender(String value){
      this.value = value;
  }


  public String getValue() {
      return value;
 }
}

此枚举是我的类的构造函数。

1
2
3
4
5
6
class People {
   private String name;
   private int id;
   private int age;
   private Gender x;
}

然后我尝试从用户创建一个这个类的新对象,用户输入一个名称、ID、年龄和性别。我正在使用对话框JoptionPane。我要出错的是这条线。

1
2
3
4
5
6
7
8
 public class AppPeople {
 public static void main(String[] args) {
   Gender gender1; //I tried declaring String gender1
                   //To get the answer/input below, but didn't work.
   gender1 = JOptionPane.showInputDialog(null,"Type Male or Female");
   People p1 = new People(name, id, age, Gender1);
   }
}

所有其他字段都在对话框、名称、ID和年龄中工作。这一个枚举不起作用。我必须声明ID和Age字符串才能在对话框中使用它,所以我将键入的答案转换为字符串变量并将其转换为整数,以匹配类的构造函数。我试图声明一个新的字符串,以从对话框中获取输入并将其转换为枚举,但仍然不起作用。唯一剩下的字段是将字符串转换为枚举的字段。有人知道我能做些什么来修复或者也许是一个新的解决方案吗?


你可以使用

1
 gender1 = Gender.valueOf(JOptionPane.showInputDialog(null,"Type Male or Female").toUpperCase());

只是每个枚举的SE方法

1
Gender.valueOf("yourString")