真的坚持这个。所以基本上,我试图检索我在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);
}
}
答案 0 :(得分:0)
我认为你得到NullPointerEception
。
将它放在构造函数ColorFrame()
pixel = new Pixel(); // initializing pixel
或者您可能在pixel = cp[x][y];
函数
setPixel()
答案 1 :(得分:0)
此代码有一系列问题(单一化成员,构造函数中的像素=像素,成员可见性,数组),但这不是重点。
首先,尝试将final
放在ColorPixel init_color
之前,IDE会立即告诉您有一个案例,它仍然未初始化:您的第二个构造函数将其保留为null,因此如果您使用它,那么整个数组将初始化为null。
如果您使用第一个构造函数,那么只要getPixel
或x
超出原始y
和width
,您在height
中仍将为空低于500 - 你永远不会检查界限。
如果您使用第一个构造函数且x
和y
在限制范围内,则应获得非null结果(除非您没有在构造函数中为init_color传递null)。