【问题标题】:How to add values to an object如何向对象添加值
【发布时间】:2017-05-14 08:03:03
【问题描述】:

我尝试学习 Java 并有一个问题。 我创建了一个颜色类。此类包含具有 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;
}

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

【问题讨论】:

  • 未为您的对象定义总和,如果它包含string,java 应该做什么?您必须手动对红色、绿色、蓝色值求和
  • 当你说“颜色元素的数组”时,你的意思是 Color,即你的类颜色吗?

标签: java arrays object compiler-errors


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    sum 变量是Color 和表单中的串联

    sum = sum + array[i];
    

    没有定义,所以编译器无法理解如何解决这样的操作

    你可以考虑类似

    sum.red +=  array[i];
    

    is array[i] 是一个整数或:

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

    如果数组是颜色数组

    【讨论】:

      【解决方案3】:

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

      例如:

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

      【讨论】:

      • 这不是答案,而是评论。
      • @aubin 我已经编辑了 :) 现在清楚了吗?顺便说一句,我无权发表评论。
      【解决方案4】:

      你不能使用+ 操作符来做你想做的事,但你可以在你的Color 类中添加一个add 方法,这样你就可以编写:

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

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

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

      【讨论】:

        猜你喜欢
        • 2019-08-13
        • 2017-08-04
        • 2016-03-17
        • 1970-01-01
        • 2019-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多