因此,我正在做一个小型Java游戏,作为一个学校项目,想返回一个图像,该图像应该在HashMap中。在我调用的方法中,我想提供一个java.awt.Color作为参数,并在其上做出switch语句。
(注意:进入该功能的所有颜色均为默认颜色,例如“ Color.red”或“ Color.green”!)
我已经尝试使用Color的RGB值来做到这一点,但这不起作用。
在此不工作代码:
private static HashMap<Color, Image> blocks_hash;
public static void setBlock(Color color, Image image) { blocks_hash.put(color, image); }
public static Image getBlock(Color color) {
if(blocks_hash.containsKey(color))
return blocks_hash.get(color);
else
switch (color.getRGB()) {
case Color.red.getRGB():
return getBlocks().getSubimage(0, 0, 60, 60);
}
return null;
}
答案 0 :(得分:0)
您无法制作开关盒,因为它已经是常数,请参见here
您可以将颜色更改为枚举字段
class newClass {
enum Colors {RED,GREEN,BLACK}
public static Image getBlock(Colors colors) {
switch (colors){
case BLACK:
System.out.println("BLACK");;
break;
case GREEN:
System.out.println("GREEN");;
break;
case RED:
System.out.println("RED");
break;
default:
System.out.println("non color");
}
}
PS 没有开关盒
class newClass {
enum Colors {RED,GREEN,BLACK}
public static Image getBlock(Colors colors) {
if(colors==BLACK){
System.out.println("BLACK");
}else if(colors==GREEN){
System.out.println("GREEN");
}else if(colors==RED){
System.out.println("RED");
}else
System.out.println("non color");
}
}
并应用您的代码
public static Image getBlock(Color color) {
if (blocks_hash.containsKey(color)) {
if (color == Color.BLACK) {
System.out.println("Black");
} else if (color == Color.CYAN) {
System.out.println("CYAN");
}
} else {
System.out.println("non color");
}
return null;
}