java - Java:如何在 main 函数中使用 Enum 类型的变量?
问题描述
我正在尝试使用变量类型Level
(枚举)作为我的参数来打印特定的语句。当我运行打印语句时System.out.println(whatLevel(HARD))
,我得到一个错误。我怎样才能使这项工作?
public class GamesLevels{
enum Level{EASY,MODERATE,HARD}
public String whatLevel(Level level){
Sring myAns = "";
if (level == Level.EASY) {
myAns = "welcome to the game";
}
else if (level == Level.MODERATE) {
myAns = "Wow, you leveled up!";
}
else if (level == Level.HARD) {
myAns = "Nice, we have a Pro!";
}
return myAns;
}
public static void main(String[] args) {
System.out.println(whatLevel(HARD));
}
}
解决方案
您还可以将每个枚举的描述合并到声明中:
public class GamesLevels {
enum Level {
EASY("welcome to the game"),
MODERATE("Wow, you leveled up!"),
HARD("Nice, we have a Pro!");
private String desc;
Level(String desc) {
this.desc = desc;
}
String getDescription() {
return desc;
}
}
public static void main(String[] args ) {
System.out.println(Level.HARD.getDescription());
}
}
这样做的好处是,如果您稍后添加一个级别,它不会在不添加描述的情况下编译,而 whatLevel 将按原样工作并且不打印任何内容。
或更短的版本:
public class GamesLevels {
enum Level { EASY, MODERATE, HARD };
private static Map<Level,String> descriptions = Map.of(
Level.EASY, "welcome to the game",
Level.MODERATE, "Wow, you leveled up!",
Level.HARD, "Nice, we have a Pro!");
public static void main(String[] args ) {
System.out.println(descriptions.getOrDefault(Level.HARD, "UNKNOWN"));
}
}
推荐阅读
- r - 本地服务器上的 R-markdown 演示网络服务器
- python - 如何将开始和结束日期记录转换为时间戳?
- ios - UICollectionView 在 UIStackView 中消失
- r - 将来自多个回归的系数存储在 R 中,然后将系数调用到第二个循环中
- apache-spark - SparkSql with JDBC Connection
- javascript - why does HTML require double click when it first loads
- react-native - React native performance - App not loading content from server
- google-cloud-platform - How to use Google Cloud Billing APIs to calculate usage costs?
- java - 如何在不使用 @JsonIgnore 的情况下解决 (com.fasterxml.jackson.databind) 异常
- vba - Testing if a variable is greater than 0