使用for循环设置红色2d数组值

时间:2015-01-29 19:42:47

标签: java arrays for-loop

我正在尝试创建一个方法,该方法将获取图像中的所有红色值并仅显示红色值。我的getRedImage()方法遇到问题。我是新手,非常感谢任何帮助!

public class SimpleRGB
{
    private int width, height;
    private int[][] red = new int[1000][1000];

此部分获取红色值并将其设置为我的2D红色数组的指定位置:

    public void setRed(int x, int y, int aRed)
    {
        red[x][y] = aRed;
    }

此部分在坐标(x,y)处获取红色值并返回它:

    public int getRed(int x, int y)
    {
        int thisr = red[x][y];
        return thisr;
    }

我不确定如何说出这一部分。我知道我需要创建一个新的SimpleRGB对象来返回,然后使用嵌套的for循环将我的新简单RGB对象的红色2D数组设置为这个simpleRGB对象的红色2D数组,然后使用嵌套的for循环来将绿色和蓝色2D数组值都设置为全零。我只是不确定如何做到这一点。

    public SimpleRGB getRedImage()
    {
        // This is where I am confused.
    }
}

3 个答案:

答案 0 :(得分:1)

在2d数组中循环很容易 但我不认为这是正确的方法。

private int[][] red = new int[1000][1000];

for (int i = 0; i < 1000; i++) {
    for(int j = 0; j < 1000; j++) {
        System.out.println(red[i][j]);
    }
}

答案 1 :(得分:0)

我不太了解你的问题,但是,如果你有3个2D阵列,每个RGB一个:

int[][] red = new int[1000][1000];
int[][] green = new int[1000][1000];
int[][] blue = new int[1000][1000];

并且您只需要图像中的红色,只需将所有其他颜色设置为零:

public class SimpleRGB
{
    private int width;
    private int height;
    private int[][] red = new int[1000][1000];
    private int[][] green = new int[1000][1000];
    private int[][] blue = new int[1000][1000];

    public SimpleRGB(int[][] red, int[][] green, int[][] blue) {
        this.red = red;
        this.green = green;
        this.blue = blue;
    }

    // some methods

    public int[][] getRed() {
        return red;
    }

    public int[][] getGreen() {
        return green;
    }

    public int[][] getBlue() {
        return blue;
    }

    // the method that interests you

    public SimpleRGB getRedImage() {
        return new SimpleRGB(red, new int[1000][1000], new int[1000][1000]);
    }
}

创建一个新数组,默认情况下将其所有元素初始化为0。

答案 2 :(得分:0)

我终于明白了:

public SimpleRGB getRedImage()
{
    SimpleRGB redImage = new SimpleRGB(width, height);

    for (int i = 0; i < width; i++)
    {
        for (int j = 0; j < height; j++)
        {
            redImage.setRed(i, j, getRed(i, j));
            redImage.setGreen(i, j, getGreen(i, j, 0);
            redImage.setBlue(i, j, getBlue(i, j, 0));
        }
    }

return redImage;
}

我的基本结构正确但我改变了这个红色/绿色/蓝色而不是添加redImage.setRed来修改NEW对象。