gpt4 book ai didi

java - Java 中 int 转换为 enum

转载 作者:行者123 更新时间:2023-12-02 02:12:16 25 4
gpt4 key购买 nike

我正在为类(class)作业编写一个多项式计算器,并且我想在 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;
}

}

程序中的这个开关案例:

choice = mysc.nextInt();
Options o = Options.convert(choice);
switch(o)
{
case ADDITION: Add(isRational);break;
case MULTIPLICATION: Mul(isRational);break;
case EVALUATION: Evaluate(isRational);break;
case DERIVIATE: Derivative(isRational);break;
case EXIT: break;
}

我想在 switch case 中使用枚举,但我希望用户的输入是 int,因为这是分配的要求。

我想将从用户那里获得的 int 转换为相应的枚举,并在 switch case 中使用它。

有没有一种方法可以将其转换为正确的枚举而不使用枚举内部的转换方法?

最佳答案

将枚举更改为从基于 0 的索引开始并使用 Enum.values()[index]。这是一个简单的代码示例,您可能需要对无效枚举值引入某种验证:

import java.io.BufferedInputStream;
import java.util.Scanner;

class Scratch {
public static void main(String[] args) {
Scanner input = new Scanner(new BufferedInputStream(System.in));
System.out.println("Enter Value");
int choice = Integer.parseInt(input.nextLine());
System.out.println(choice);
Options enumValue = Options.values()[choice];
System.out.println(enumValue);
}
}

enum Options{
ADDITION(0),
MULTIPLICATION(1),
EVALUATION(2),
DERIVIATE(3),
EXIT(4);

public final int value;

Options(int value){
this.value = value;
}

public int getValue() {
return value;
}
}

输出

enter image description here

另外仅供引用,Enum.values()[index] 可能有点贵,所以如果性能是一个问题,请记住这一点。由于这是一项作业,我怀疑这是一个问题,但为了您自己的理解,需要记住这一点。

关于java - Java 中 int 转换为 enum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49846479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com