循环不能达到第3和第4内部

时间:2017-01-31 16:18:05

标签: java arrays image-processing kernel blur

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

我正在尝试创建一个程序,在2d的Color像素数组中,我尝试在较大的2d数组中移动2x数组的3x3内核,并将中心像素值设置为所有rgb的平均值值。我已经调试了几个小时,但这根本不会达到第三个for循环。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

这个循环永远不会做任何事情。

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

这是因为i + 1&lt; = i - 1永远不会为真(除非你有溢出)

你最有可能的意思是

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

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