如何向对象添加值

时间:2017-05-14 08:03:04

标签: java arrays object compiler-errors

我尝试学习Java并有一个问题。 我创建了一个类Color。该类包含" color"的构造函数。具有3个int值(红色,绿色,蓝色)。然后我有一个包含很多颜色元素的数组。

现在我想将这些元素中的4个添加到一个并除以它,因此我得到每个int值的平均值。

但是eclipse说,运算符+是未定义的。

Color sum = new Color(red, green, blue)
for (int i = 0; i < length; i ++) {
     sum = sum + array[i];
}

public Color(int r, int g, int b){
    this.red=r;
    this.green=g;
    this.blue=b;
}

如何将每个数组元素的值添加到总和中?数组中的元素来自类型颜色。

4 个答案:

答案 0 :(得分:2)

Java中没有运算符重载。您必须单独处理每个值:

int avgRed = 0;
int avgGreen = 0;
int avgBlue = 0;
for (int i = 0; i < length; i ++) {
    avgRed += array[i].getRed();
    avgBlue += array[i].getBlue();
    avgGreen += array[i].getGreen();
}
Color avgColor = new Color(avgRed / length, avgBlue / length, avgGreen / length);

答案 1 :(得分:1)

sum 变量是Color,表格中的连接是

sum = sum + array[i];

未定义,因此编译器无法理解如何解决此类操作

你可能会考虑像

这样的东西
sum.red +=  array[i];

是array [i]持有一个整数或:

sum.red +=  array[i].red;

如果数组是颜色数组

答案 2 :(得分:0)

Sum是一个不可变的对象。您可以为其关联参数添加值。

例如:

sum.red = sum.red+array[i].red

答案 3 :(得分:0)

您无法使用+运算符执行您的操作,但可以向add类添加Color方法,以便您可以编写:

Color sum = new Color(red, green, blue)
 for (int i = 0; i < length; i ++) {
    sum = sum.add(array[i]);

让我们假设在这个讨论中添加Color s意味着我们将一个的红色部分添加到另一个的红色部分,绿色到绿色,蓝色到蓝色。您的add方法如下所示:

    public Color add(Color other) {
        return new Color(this.red + other.red, 
                         this.green + other.green,
                         this.blue + this.blue);
    }