首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NullPointerException (救命!)

NullPointerException (救命!)
EN

Stack Overflow用户
提问于 2013-03-20 04:34:37
回答 2查看 79关注 0票数 0

我一直在使用bookClasses类集来操作图像,但在尝试删除图像中的红眼时,我得到了一个NullPointerException错误。代码如下:

首先是Picture.Java类中的removeRedEye方法:

代码语言:javascript
运行
复制
 public void removeRedEye(int startX, int startY, int endX, int endY, Color newColor){

    Pixel pixel = null;

    for (int x = startX; x < endX; x++){
        for (int y = startY; y < endY; y++){
            if (pixel.colorDistance(Color.RED) < 167){
                        pixel.setColor(newColor);
            }
        }
    }
  }
}

和Test类:

代码语言:javascript
运行
复制
public class TestRemoveRedEye{

    public static void main(String[] args){

        String fileName = FileChooser.getMediaPath("//jenny-red.jpg");

        Picture jennyPicture = new Picture(fileName);

        jennyPicture.removeRedEye(109,91,202,107,java.awt.Color.BLACK); 

        jennyPicture.explore();

    }
}

如果有人能建议为什么我的程序不能工作,我将不胜感激。

在error: removeRedEye方法中的if (pixel.colorDistance(Color.RED) < 167){中挑出了这些行

来自测试类的jennyPicture.removeRedEye(109,91,202,107,java.awt.Color.BLACK);

EN

回答 2

Stack Overflow用户

发布于 2013-03-20 04:36:06

像素 is 在调用其引用的方法之前,您需要对其进行初始化。

代码语言:javascript
运行
复制
Pixel pixel = null;// neew to initialize this.
pixel = new Pixel(); // somethin like this 
for (int x = startX; x < endX; x++){
    for (int y = startY; y < endY; y++){
        if (pixel.colorDistance(Color.RED) < 167){
票数 2
EN

Stack Overflow用户

发布于 2013-03-20 04:36:06

您将null赋值给pixel,然后在其上调用一个方法。因此出现了NPE。

代码语言:javascript
运行
复制
Pixel pixel = null;
for (int x = startX; x < endX; x++){
    for (int y = startY; y < endY; y++){
        if (pixel.colorDistance(Color.RED) < 167){ // <==== pixel is null !
                    pixel.setColor(newColor);
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15509884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档