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