首页 > 解决方案 > 如何为 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;
    }

标签: javacolorsswitch-statement

解决方案


您不能制作开关盒,因为它已经保持不变,请参见此处

您可以将颜色更改为枚举字段

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

推荐阅读