Java中int转Enum实现:多项式计算器Switch Case应用疑问
把int转换为Enum并在switch case中使用的解决方案
嘿,你这个Options枚举的设计已经很贴心了,那个convert方法正好是实现int转枚举的关键!接下来我给你一步步演示怎么把它用在switch case里:
第一步:格式化你的枚举(可选但推荐)
先把你写的枚举稍微格式化一下,让代码更易读,完全不影响功能:
enum Options { ADDITION(1), MULTIPLICATION(2), EVALUATION(3), DERIVIATE(4), EXIT(5); public final int value; Options(int value) { this.value = value; } public int getValue() { return value; } public static Options convert(int n) { for (Options o : values()) { if (o.getValue() == n) { return o; } } return null; } }
第二步:完成int到Enum的转换并使用switch case
接下来你只需要调用convert方法把用户输入的int转成Options实例,然后直接在switch里用枚举常量就行,还要记得处理无效输入的情况(避免NullPointerException):
Scanner mysc = new Scanner(System.in); int userInput = mysc.nextInt(); Options choice = Options.convert(userInput); // 先处理无效输入的情况 if (choice == null) { System.out.println("请输入有效的选项:1-5"); // 这里可以加逻辑让用户重新输入,比如循环接收输入 return; } // 现在可以安全地使用switch了 switch (choice) { case ADDITION: // 编写多项式加法的逻辑 System.out.println("开始计算多项式加法"); break; case MULTIPLICATION: // 编写多项式乘法的逻辑 System.out.println("开始计算多项式乘法"); break; case EVALUATION: // 编写多项式求值的逻辑 System.out.println("开始对多项式求值"); break; case DERIVIATE: // 编写多项式求导的逻辑 System.out.println("开始对多项式求导"); break; case EXIT: // 退出程序的逻辑 System.out.println("退出多项式计算器"); mysc.close(); break; }
关键要点说明
- Java 7及以上版本支持在switch语句中使用枚举类型,所以这个写法完全合法
- 先判断
choice是否为null,是为了防止用户输入1-5之外的数字时,convert返回null导致switch抛出异常 - 使用枚举作为switch的条件,代码可读性更高,也避免了直接使用“魔法数字”(比如1、2)带来的维护问题
内容的提问来源于stack exchange,提问作者eyal mazuz
相关产品推荐
相关产品推荐

