Access enums through command line
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | enum Child { David(23), Johnson(34), Brackley(19); } int age; Child(int age) { this.age=age; } void getAge() { return age; } public class Test { public static void main(String args[]) { --------------------- } } |
如果我必须输入命令行参数,例如,如果我输入Java测试戴维然后打印"23"。
那么我们如何通过命令行访问枚举呢?主要方法应该写什么?
请解释一下……
您需要将字符串arg从命令行转换为枚举值。
1 | Child c = Child.valueOf(args[0]); |
使用
注:如未找到则抛出
另一种解决方案是在枚举类本身上使用
你的解决方案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | public enum Child { David(23), Johnson(34), Brackley(19); private int age; private Child(int age) { this.age=age; } int getAge(){ return age; } public static Child getAgeFromName(String name) { for(Child child : Child.values()) { if(child.toString().equalsIgnoreCase(name)) { return child; } } return null; } public static void main(String[] args) { if(args.length != 0) { Child child = Child.getAgeFromName(args[0]); if(child != null) { System.out.println(args[0] +" age is" + child.getAge()); }else { System.out.println("No child exists with name" + args[0]); } } else { System.out.println("please provide a child name"); } } } |
输入:输出Java儿童戴维:戴维年龄为23岁Java子山姆:没有名字山姆存在Java子:请提供子名称
希望这能解决你的问题
您可以执行以下操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | enum Child { David(23), Johnson(34), Brackley(19); int age; Child(int age) { this.age=age; } public int getAge() { return age; } public static void main(String args[]) { for(Child c : Child.values()) { //Here you can check for you equality of name taken as command line arg System.out.println("Name is" + c +" and age is" + c.getAge()); } } } |
输出如下