gpt4 book ai didi

Java 使用 HashMap 和 switch 语句

转载 作者:太空宇宙 更新时间:2023-11-04 14:06:54 24 4
gpt4 key购买 nike

我有一个常量类,我在其中保存了常量的 HashMap,例如:

import java.util.HashMap;
import java.util.Map;

/**
* Constantes de uso general en el programa.
*/
public final class Consts {

// Opciones del menu de juego.
public static final Map<Integer, String> GAMETYPE;
static
{
GAMETYPE = new HashMap<>();
GAMETYPE.put(1, "MANUAL");
GAMETYPE.put(2, "AUTOMATIC");
GAMETYPE.put(3, "EXIT");
}

/**
*
* @param userType
* @return
*/
public static String valueOf(int userType) {
return GAMETYPE.get(userType);
}
/**
* Impide construir objetos de esta clase.
*/
private Consts(){
// Tampoco permite a la clase nativa llamar al constructor.
throw new AssertionError();
}
}

我想在另一个类的 switch-case 语句中使用这个常量,例如:

userType = sc.nextInt();
switch(Consts.valueOf(userType)) {
case MANUAL:
System.out.println(">> You have selected the manual mode");
break;
case AUTO:
System.out.println(">> You have selected the manual mode");
break;
case EXIT:
System.out.println(">> Good-bye");
break;

程序仍然找不到手动、自动或退出。有什么想法吗?

PS:我不想使用枚举(这就是我现在构造常量的方式,但我认为拥有许多常量类的事实使得很难遵循代码)并且我不想像这样一一声明常量:

public static final int MANUAL = 1; 
public static final int AUTO = 2;
public static final int EXIT = 3;

因为我希望在常量类中构造常量。谢谢!

最佳答案

如果您使用的是 Java 7 或更高版本,您可以执行以下操作:

switch(Consts.valueOf(userType)) {
case "MANUAL"://notice quotes..
System.out.println(">> You have selected the manual mode");
break;
case "AUTO":
System.out.println(">> You have selected the manual mode");
break;
case "EXIT":
System.out.println(">> Good-bye");

关于Java 使用 HashMap 和 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28781011/

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