2014-04-11 37 views
1

尝试在二维数组中使用方法时,我收到空指针异常。在二维数组中的对象上使用方法

我声明数组是这样的:

Color[][] rgbArray = new Color[height][width]; 

很明显的颜色对象的数组。我然后添加颜色对象使用阵列:

for (int y = 0; y < (height); ++y) { 
    for (int x = 0; x < (width); ++x) { 

     rgbArray[y][x] = new Color(img.getRGB(x, y)); 
    } 
} 

这是通过使用从被缓冲的图像“IMG”的RGB值,以创建相应的数组索引颜色对象。

我再试图访问使用这些东西值这个喜欢:

for (int y = tempStartlimit; y < (tempEndlimit); ++y) { 
    for (int x = tempStartlimit; x < (tempEndlimit); ++x) { 

     int red += rgbArray[y][x].getRed(); 
     int green += rgbArray[y][x].getGreen(); 
     int blue += rgbArray[y][x].getBlue(); 
    } 
} 

这是为什么不工作?

任何帮助,非常感谢。

+0

哪行代码抛出NPE? 'img'也许'null'? –

+0

tempStartlimit和tempEndlimit的值是什么? – Kaleel

+0

有了这样的问题,你希望发布堆栈的前几行。更好的是,看看他们,你应该能够弄清楚自己。 –

回答

1

对于这两个维度使用tempEndlimit,但在初始化过程中使用heightwidth。你是否确定tempEndLimit小于两者?否则有你的答案。你的意思是使用2个限制吗?

+0

我相信如此。我正在试图访问一系列2×2块的阵列,例如访问前两行前两列中的前两个值。然后再对前两行中的后两列执行。 – Ben

+0

该数组被显示为“新颜色[高度] [宽度]”,因此很明显数组至少在初始时被完全填充。 – Radiodef

+0

@fluffybonkers那么也许你的数组甚至不是x?或者你在边缘停止的逻辑是错误的。你需要看看临时限制。 –