2017-05-14 21 views
1

私はJavaを学び、質問があります。 私はクラスColorを作成しました。このクラスには、3つのint値(赤、緑、青)を持つ "color"のコンストラクタが含まれています。それから私は多くの色要素を持つ配列を持っています。オブジェクトに値を追加する方法

ここでは、この要素のうちの4つを1つに追加して分割したいので、各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; 
} 

合計に各配列要素の値を追加するにはどうすればよいですか?配列内の要素は、型のカラーからのものです。

+1

合計それは 'やるのJavaすべきかSTRING'が含まれている場合、あなたのオブジェクトのために定義されていませんか?赤、緑、青の値を手動で合計する必要があります –

+0

「色要素の配列」と言うときは、** C ** olor、つまりクラスの色ですか? –

答えて

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

合計は変数はColor

sum = sum + array[i]; 

が定義されていない形で連結したものですので、コンパイラはあなたが多分

のようなものを検討することもでき

、このような操作を解決する方法を理解することはできません

sum.red += array[i]; 

は配列[i]が整数を保持しているか、

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

アレイは色

0

合計のアレイである場合variable.Youは、その関連するパラメータに値を追加することができないオブジェクトです。例えば

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

これは答えではなく、コメントです。 – Aubin

+0

@aubin私は編集しました:)今は明確ですか?私はコメントにアクセスする必要はありません。 – Arpit

0

あなたは、あなたが考えているものを行うために+演算子を使用することはできませんが、あなたがして書くことができるように、あなたのColorクラスにaddメソッドを追加することができます:

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

はのはColor Sを追加すると、私たちは青は青、緑、緑、他の赤の部分に1の赤い部分を追加する意味、この議論のためと仮定しましょう。あなたのadd方法は次のようになります。

public Color add(Color other) { 
     return new Color(this.red + other.red, 
         this.green + other.green, 
         this.blue + this.blue); 
    } 
関連する問題