从数组java切换语句

时间:2014-02-04 20:43:37

标签: java arrays switch-statement

而不是我必须为我决定添加的每种颜色创建一个新案例,是否有一种替代方法可以使用带有数组字符串的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;
    }
}

4 个答案:

答案 0 :(得分:6)

而不是这种情况,为什么不使用地图而不是这种方式,你只需要添加到地图而不用担心继续每件的案例陈述

Map<String, Integer> colorMap = new HashMap<String, Integer>() {{
   put("red", 999);
   put("green", 639);
}};

然后你可以使用colorMap.get(“red”)它会返回正确的整数

答案 1 :(得分:2)

另一种解决方案是使用枚举

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());
}

答案 2 :(得分:1)

您正在寻找的是HashMap

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

如果没有明确设置所有情况,就无法使用开关。

答案 3 :(得分:0)

我假设你想要这样的东西

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]);
    }
}