我不确定在这里是否正确使用实例变量-基于RGB的对象Java

问题描述

我正在努力找出在对象内使用实例变量的相互作用,但能够使用采用其他对象参数的方法来更改对象。该程序应该使用带有int参数的Color对象作为R,G和B值,以将自身与颜色关联。

例如:

   public void add(Color c) {
        red = red + c.red;
        blue = blue + c.blue;
        green = green + c.green;

        if (red > 255) {
            red = 255;
        }
        if (green > 255) {
            green = 255;
        }
        if (blue > 255) {
            blue = 255;
        }
    }

我不知道我尝试使用的格式是否有问题,但是我似乎无法弄清楚我到底在哪里跳。作为参考,这是我要使用的构造函数:

    public Color(int r,int g,int b) {
        red = r;
        green = g;
        blue = b;
        if (r > 255) {
            red = 255;
        }
        if (r < 0) {
            red = 0;
        }
        if (g > 255) {
            green = 255;
        }
        if (g < 0) {
            green = 0;
        }
        if (b > 255) {
            blue = 255;
        }
        if (b < 0) {
            blue = 0;
        }

    }

这是我正在运行的测试,试图查看我的方法是否有效:

    public final static Color RED = new Color(255,0);

    public static void main(String[] args) {
        Color test = new Color (0,0);

        test.add(RED);
        System.out.println(test.red + test.green + test.blue);
    }

但是这只产生了0。对我不了解的内容的任何帮助或见识都将是很棒的!

解决方法

代码似乎没有任何明显的问题,但是我建议为Color类编写toString方法以及一些getter和setter方法。但是,这应该很好地将其格式化为十六进制字符串(#rrggbb)。

public String toString() {
    String.format("#%02x%02x%02x",red,green,blue)
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...