gpt4 book ai didi

java - 未找到枚举常量

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

我将 enum 声明为 switch 语句的输入,因为它不允许 String值。

public enum names{VALUE1, VALUE2}

我有一个List(VALUE1, VALUE2, VALUE3)

for(int i=0; i<list.size();i++)
{
names n=new names(list.get(i).trim());
switch(n) {
case VALUE1:
System.out.println("1");
break;
case VALUE2:
System.out.println("2");
break:
default:
System.out.println("Nothing to print");
}
}

在执行上述代码时,我得到 No Enum constant Class.data.VALUE3.错误。请帮我解决这个错误。

最佳答案

你可以使用names.valueOf(),但如果找不到名称,它会抛出异常:

for(int i=0; i<list.size();i++)
{
try {
names n=names.valueOf(list.get(i).trim());
switch(n) {
case VALUE1:
System.out.println("1");
break;
case VALUE2:
System.out.println("2");
break:
default:
System.out.println("Nothing to print");
}
} catch (IllegalArgumentException e) {
System.out.println("Nothing to print");
}
}

否则,您需要一个循环:

private static names find(String name) {
for (names n: names.values()) {
if (n.name().equals(name)) {
return n;
}
}
return null;
}

但您需要在切换之前检查 null:

for(int i=0; i<list.size();i++)
{
names n=find(list.get(i).trim());
if (n != null) {
switch(n) {
case VALUE1:
System.out.println("1");
break;
case VALUE2:
System.out.println("2");
break:
default:
System.out.println("Nothing to print");
}
} else {
System.out.println("Nothing to print");
}
}

关于java - 未找到枚举常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47507077/

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