如何在getPixel中访问数组?

时间:2014-02-14 09:04:24

标签: java arrays methods pixel

真的坚持这个。所以基本上,我试图检索我在setPixel中的2d数组中分配的像素,但是当我尝试设置pixel = cp [x] [y]时,它告诉我它是空的。任何帮助都将非常感激。

public class ColorFrame implements Frame {

    int width;
    int height;
    Pixel pixel;
    int x;
    int y;
    int i;
    int j;
    public ColorPixel cp[][] = new ColorPixel[500][500];
    ColorPixel init_color;

    public ColorFrame(int width, int height, ColorPixel init_color) {
        this.width = width;
        this.height = height;
        this.init_color = init_color;
        pixel = pixel;
    }

    public ColorFrame(int width, int height) {
        this.width = width;
        this.height = height;
        //init_color= new ColorPixel(.5,.5,.5);
        //new ColorFrame(width,height, init_color);
    }

    /*public static void main(String[] args) {
        // TODO Auto-generated method stub

    }*/
    @Override
    public int getWidth() {
        // TODO Auto-generated method stub
        return width;
    }

    @Override
    public int getHeight() {
        // TODO Auto-generated method stub
        return height;
    }

    @Override
    public Pixel getPixel(int x, int y) {
        pixel = cp[x][y];
        return pixel;
    }

    @Override
    public void setPixel(int x, int y, Pixel p) {
        // TODO Auto-generated method stub
        for (i = 0; i <= width; i++) {
            for (j = 0; j <= height; j++) {
                cp[i][j] = init_color;
            }
        }
        cp[width][height] = new ColorPixel(.5, .5, .5);
        //r++;
        //cp[x][y]=getPixel(x,y);
    }

}

2 个答案:

答案 0 :(得分:0)

我认为你得到NullPointerEception

将它放在构造函数ColorFrame()

pixel = new Pixel(); // initializing pixel 

或者您可能在pixel = cp[x][y];函数

之前调用setPixel()

答案 1 :(得分:0)

此代码有一系列问题(单一化成员,构造函数中的像素=像素,成员可见性,数组),但这不是重点。

首先,尝试将final放在ColorPixel init_color之前,IDE会立即告诉您有一个案例,它仍然未初始化:您的第二个构造函数将其保留为null,因此如果您使用它,那么整个数组将初始化为null。

如果您使用第一个构造函数,那么只要getPixelx超出原始ywidth,您在height中仍将为空低于500 - 你永远不会检查界限。

如果您使用第一个构造函数且xy在限制范围内,则应获得非null结果(除非您没有在构造函数中为init_color传递null)。