java构造函数问题··

popes_love 2010-11-29 03:07:34
package test;
class Point{
public int x ,y;
public Point(int x,int y)
{
this.x = x;this.y = y;
}
public int GetX(){
return this.x;
}
public int GetY(){
return y;
}
}
class Line{
public Point p1,p2;
Line(){};
Line(Point a,Point b)
{
p1 = new Point(a.GetX(),a.GetY());
p2 = new Point(b.GetX(),b.GetY());
}
public double Length(){
return Math.sqrt(Math.pow(p2.GetX()-p1.GetX(), 2) + Math.pow(p2.GetY()-p1.GetY(),2));
}
}
public class aLine {
public static void main(String[] args)
{
Line l = new Line();
l.p1.x=2;l.p1.y=3;l.p2.x=4;l.p2.y=5;
System.out.println(l.Length());
}
}
总是报错Exception in thread "main" java.lang.NullPointerException
at test.aLine.main(aLine.java:31)
是不是Line构造函数的问题?Line如何写构造函数
...全文
58 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ousyuryu 2010-11-29
  • 打赏
  • 举报
回复
Line l = new Line();走的是无参的构造函数

这时候你l里的p1,p2并没有被实例化

所以你出空指针错了,给p1,p2付初始值

Line()
{
p1 = new Point(0,0);
p2 = new Point(0,0);
}

你这个代码执行错误好像就是这个了,构造上不太好

soli11722984 2010-11-29
  • 打赏
  • 举报
回复
new Line() ---> Line(){} 调用了这个构造方法
那么你什么时候p1和p2有new了?
popes_love 2010-11-29
  • 打赏
  • 举报
回复
来人啊 来人啊 急急急急急··

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧