2017-01-31 6 views
-1
public static Color[][] blur(int a, Color[][] array){ 

    System.out.println("here"); 

    for(int i=0; i<array.length; i++){ 
     for(int j=0; j<array[0].length; j++){ 

      int rsum = 0; 
      int gsum =0; 
      int bsum = 0; 

      for(int x= i+ 1; x<= i- 1; x++){ 
       for(int y= j+1; y<= j- 1; y++){ 

        if(x >= 0 && x< array.length && y>= 0 && y<array[0].length) { 

         System.out.println("hola"); 

         int r = array[x][y].getRed(); 
         rsum = rsum + r; 

         int g = array[x][y].getGreen(); 
         gsum = gsum + g; 

         int b = array[x][y].getBlue(); 
         bsum = bsum + b; 

        } 
       } 
      } 

      int ravg = rsum/a; 
      int gavg = gsum/a; 
      int bavg = bsum/a; 

      array[i][j] = new Color(ravg, gavg, bavg); 
     } 
    } 

    return array; 
} 

2次元配列の2次元配列で2次元配列の3x3カーネルを大きな2次元配列に移動しようとするプログラムを作成しようとしています。中央ピクセル値をすべてのrgb値の平均値に設定します。私は何時間もデバッグしてきましたが、これは3回目のforループにはまったく届きません。誰かが助けてくれますか?ループの3番目と4番目の内部に到達できません

+6

'x'は' i + 1'で始まり、 'x'が' i-1'以下であればループします。 'i-1'は' i + 1'よりも小さいので、あなたの初期状態はループに入る条件を満たしません。 'y'ループにも同じ問題があります。 – resueman

答えて

1

このループは決して何もしません。

for(int x= i+ 1; x<= i- 1; x++){ 

I + 1 < = Iこれは - 1が

あなたが最も可能性の高いものでは

for (int x= i - 1; x <= i + 1; x++) { 

または

for (int x= i + 1; x >= i - 1; x--) { 
です(あなたがオーバーフローを持っていない限り)真なることはありません
+0

ああ申し訳ありませんが、その質問はばかげていました。どうもありがとうございます! – msd

関連する問題