新手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方法都是正确的。
感谢您的帮助和对不起我的英语。
答案 0 :(得分:0)
这些是代码中可以为null的所有内容的列表:
最好的猜测是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))