来自java数组的Switch语句
我不必为我决定添加的每种颜色创建一个新的案例,有没有其他方法可以替代使用带有数组字符串的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
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
是一个有用的选项,但不能将原语与泛型一起使用。是的,你是对的。我犯了一个错误,现在我纠正了它。