来自java数组的Switch语句

来自java数组的Switch语句,java,arrays,switch-statement,Java,Arrays,Switch Statement,我不必为我决定添加的每种颜色创建一个新的案例,有没有其他方法可以替代使用带有数组字符串的switch语句作为案例? 这是我的密码 public static String[][] colours = { { "red", "933" }, { "lblue", "359770" }, { "blue", "428770" }, { "orange", "461770" }, { "pink", "123770" } }; public static void c

我不必为我决定添加的每种颜色创建一个新的案例,有没有其他方法可以替代使用带有数组字符串的switch语句作为案例? 这是我的密码

public static String[][] colours = { { "red", "933" },
        { "lblue", "359770" }, { "blue", "428770" },
        { "orange", "461770" }, { "pink", "123770" } };

public static void changeColour(String col, Player player) { // changeColour("red", player);
    switch (col) {
    case "red":
        player.setColour(Integer.parseInt(colours[0][1]));
        break;
    case "lblue":
        player.setColour(Integer.parseInt(colours[1][1]));
        break;
    case "blue":
        player.setColour(Integer.parseInt(colours[2][1]));
        break;
    case "orange":
        player.setColour(Integer.parseInt(colours[3][1]));
        break;
    case "pink":
        player.setColour(Integer.parseInt(colours[4][1]));
        break;
    }
}

为什么不使用Map来代替case呢?这样,您只需添加到Map中,而不用担心为每个片段继续case语句

Map<String, Integer> colorMap = new HashMap<String, Integer>() {{
   put("red", 999);
   put("green", 639);
}};
Map colorMap=newhashmap(){{
put(红色),999 ;;
付诸表决(“绿色”,第639页);
}};

然后你可以使用colorMap.get(“红色”),它会返回正确的整数,我想你需要这样的

public static void changeColour(String col, Player player) 
{
    for(int i=0; i<colours.length; i++)
    {
        if(col.equals(colours[i][0]))
            player.setColour(Interger.parseInt(colours[i][1]);
    }
}
public static void changeColour(字符串列、播放器)
{

对于(inti=0;i,您正在寻找的是一个HashMap

Map<String, Integer> map = new HashMap<String, Integer>();
Map Map=newhashmap();

如果不显式设置所有情况,就无法使用switch。

另一种解决方案是使用enum

enum Colour {
   red(933), blue(428770), // etc.
   ;

   int code;
   Colour(int code) {this.code = code;}
   int getCode() {return code;}
}
并将您的方法重写为

void changeColour(Colour colour, Player player) {
   player.setColour(colour.getCode());
}

@Alexandros imho可能重复,问题不在于字符串的切换,而是如何将一个字符串映射到另一个字符串(或一个数字)
map
是一个有用的选项,但不能将原语与泛型一起使用。是的,你是对的。我犯了一个错误,现在我纠正了它。