我写的求两点间的距离
没看到报错 但是运行的结果是空指针 为什么?
点类
package mxdx;
public class D {
// 构造函数
public D(float x, float y)
{
this.x=x;
this.y=y;
}
private float x,y ;
float getY() {return y;}
float getX() {return x;}
void set(float x,float y )
{
this.x=x;
this.y=y;
}
void show()
{
System.out.println("("+x+","+y+")");
}
}
直线类
package mxdx;
public class Zx {
//静态成员
D p1,p2;
float distance;
float disx,disy;
void set(D p1,D p2)
{
this.p1=p1;
this.p2=p2;
}
void calc()
{
float disx=p1.getX()-p2.getX();
float disy=p1.getY()-p2.getY();
distance=(float)Math.sqrt((disx*disx)+(disy*disy));
}
static float getDis(D p1,D p2) {
float distance;
float disx=p1.getX()-p2.getX();
float disy=p1.getY()-p2.getY();
distance=(float)Math.sqrt(disx*disx+disy*disy);
return distance;
}
void show()
{
p1.show();
p2.show();
System.out.println("两点间的距离:"+distance);
}
}
运行代码
package mxdx;
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
D d1=new D(2,3);
D d2=new D(2,3);
Zx eg=new Zx();
Zx.getDis(d1,d2);
eg.show();
}
}
运行截图
正确代码
错误点:
/**
* @author:三喂树屋,公众号同名,小白学习,一起交流成长
* @2022/3/27 12:45
* 文件信息:
*/
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
D d1=new D(2,3);
D d2=new D(2,3);
Zx eg=new Zx();
eg.set(d1,d2);
Zx.getDis(d1,d2);
eg.show();
}
}
class D {
// 构造函数
public D(float x, float y)
{
this.x=x;
this.y=y;
}
private float x,y ;
float getY() {return y;}
float getX() {return x;}
void set(float x,float y )
{
this.x=x;
this.y=y;
}
void show()
{
System.out.println("("+x+","+y+")");
}
}
class Zx {
//静态成员
D p1,p2;
static float distance;
float disx,disy;
void set(D p1,D p2)
{
this.p1=p1;
this.p2=p2;
}
void calc()
{
float disx=p1.getX()-p2.getX();
float disy=p1.getY()-p2.getY();
distance=(float)Math.sqrt((disx*disx)+(disy*disy));
}
static float getDis(D p1,D p2) {
float disx=p1.getX()-p2.getX();
float disy=p1.getY()-p2.getY();
distance=(float)Math.sqrt(disx*disx+disy*disy);
return distance;
}
void show()
{
p1.show();
p2.show();
System.out.println("两点间的距离:"+distance);
}
}
zx类的属性都还没赋值呢
D d1=new D(2,3);
D d2=new D(2,3);
Zx eg=new Zx();
Zx.getDis(d1,d2);
eg.show();
你这里全程也没有给eg的p1和p2赋值,所以报了空指针
你代码运行的时候,new 了两个对象,但是,没有将对象set进去,应该加上 eg.set(d1,d2); 如下
public static void main(String[] args) {
// TODO Auto-generated method stub
D d1=new D(2,3);
D d2=new D(2,3);
Zx eg=new Zx();
eg.set(d1,d2);
Zx.getDis(d1,d2);
eg.show();
}