JAVA:我不明白这个NullPointerException

时间:2014-10-11 16:38:12

标签: java

新手Java程序员在这里(2周)从学校获得了一项任务,以创建一个Sierpinski三角程序。

处理绘图的代码已经存在,我只需创建表示顶点和三角形的对象以及分割三角形的方法。我做了所有这些,但调用应该绘制三角形的方法给了我一个NullPointerException,我不知道是什么导致它。

我无法分享我的代码,因为这可能会导致我自动导致课程失败,但这是预先编写的方法,它给了我错误:

public boolean paintTriangle(Triangle triangle) {
    int width = panel.getWidth();
    int height = panel.getHeight();
    int halfX = width/2;
    int halfY = height/2;

    Vertex2D a = triangle.getVertexA();
    Vertex2D b = triangle.getVertexB();
    Vertex2D c = triangle.getVertexC();

    int minX = width - ((int) Math.rint(halfX - Math.min(a.getX(), Math.min(b.getX(), c.getX())))); //this is where I get the nullPointerException
    int maxX = width - ((int) Math.rint(halfX - Math.max(a.getX(), Math.max(b.getX(), c.getX()))));
    int minY = (int) Math.rint(halfY - Math.min(a.getY(), Math.min(b.getY(), c.getY())));
    int maxY = (int) Math.rint(halfY - Math.max(a.getY(), Math.max(b.getY(), c.getY())));

    if (minX < 0 || maxX > width || minY < 0 || maxY > height) {
        return false;
    }
    triangles.add(triangle);
    return true;
}

我确定我的getX和getY方法都是正确的。

感谢您的帮助和对不起我的英语。

2 个答案:

答案 0 :(得分:0)

这些是代码中可以为null的所有内容的列表:

  1. 三角形
  2. 面板
  3. 一个
  4. B'/ LI>
  5. C
  6. 最好的猜测是a,b或c为null,因此a.getX(),b.getX()或c.getX()可能会抛出NullPointerException

答案 1 :(得分:0)

¿您是否正在传递intantialize并初始化三角形对象?

类似的东西:

Triangle triangle = new Triangle();

Vertex2D vertexA = new Vertex2D();
vertexA.setX(x); // x and y are numeric primitives
vertexA.setY(y);

Vertex2D vertexB = new Vertex2D();
vertexB.setX(x);
vertexB.setY(y);

Vertex2D vertexC = new Vertex2D();
vertexC.setX(x);
vertexC.setY(y);

triangle.setVertexA(vertexA);
triangle.setVertexB(vertexB);
triangle.setVertexC(vertexC);

paintTriangle(triangle);

另一方面,您可能没有正确创建面板对象。

JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(800,600))