java - 如何为 java.awt.Color 制作 switch 语句
问题描述
因此,我正在制作一个小型 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;
}
解决方案
您不能制作开关盒,因为它已经保持不变,请参见此处
您可以将颜色更改为枚举字段
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;
}
推荐阅读
- node.js - 如何返回路由中指定的所有“数据”匹配查询参数
- excel - 如何根据三列以正确的顺序对数据列表进行排序?
- php - Laravel Eloquent 更新不更新一个字段
- javascript - 如何在 javascript 和 vimeo api 中创建无尽的视频自动播放?
- swift - 仅当组序列不跟随时才使用正则表达式?
- node.js - 将 Alexa 连接到我自己的 NodeJS 后端
- vba - 如何在 Visual Basic 中使用消息框显示变量的所有值?
- python - 使用 .between() 检查从字典中拉出的长/纬度位置时出错
- perl - Perlcritic 无法识别已整理的代码
- php-7.2 - ODBC DB2 数据提取错误(内存不足错误)