sinat_34794545 2016-05-10 08:15 采纳率: 0%
浏览 1161

Point3D 为什么结果显然不符合事实

package testpoint;

/**
*

  • @author Administrator */ public class Point2D { protected double x, y; public Point2D(double x, double y) { this.x = x; this.y = y; } public Point2D() { this(0, 0); } //返回坐标形式的字符串 public String toString() { return "(" + x + ", " + y + ")"; } //判断两个二维点是否重合 public boolean equals(Point2D p) { return x == p.x && y == p.y; } //求到原点距离 public double getDistance() { return Math.sqrt(x * x + y * y); } //根据到原点距离判断点是否为0 public boolean isZero() { return getDistance() == 0; }

}
class Point3D extends Point2D{
protected double z;//新增变量z
public Point3D(double x,double y,double z){//构造方法
super(x,y);//调用父类构造方法,必须写在首行
this.z=z;//初始化
}
public Point3D(){
this(0,0,0);
}
public String toString(){//重写
super.toString();//调被重写的 (x,y,z)
return "(" + x + ", " + y + ","+z+")";//返回
}
public double getDistance(){//重写
super.getDistance();//调父类被重写的 到原点的距离
return Math.sqrt(x*x+y*y+z*z);//返回
}
public boolean equals(Point3D p){//重载(参数变化)重写(参数不变)
return x == p.x && y == p.y&&z==p.z;

 }

}
public class TestPoint {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here
    Point2D p1 = new Point2D(3, 4);//p1=(3,4)
    Point2D p2 = new Point2D(0, 0);//p2=(0,0)
    Point3D p3 = new Point3D(0, 0, 0);//p3=(0,0,0)
    Point3D p4 = new Point3D(0, 0, 0);//p4=(0,0,0)
    System.out.println(p1 + "到原点的距离:" + p1.getDistance());
    System.out.println(p2 + "是否是0:" + p2.isZero());
    System.out.println(p1 + "和" + p2 + "是否重合:" + p1.equals(p2));
    System.out.println(p3 + "到原点的距离:" + p3.getDistance());
    System.out.println(p4 + "是否是0:" + p4.isZero());
    System.out.println(p3 + "和" + p4 + "是否重合:" + p3.equals(p4));
    Point2D p23 = new Point2D(0, 0);
    Point2D p33 = new Point3D(0, 0, 5);
    System.out.println(p23 + "和" + p33 + "是否重合:" + p23.equals(p33));
    System.out.println(p33 + "和" + p23 + "是否重合:" + p33.equals(p23));
            ![图片说明](https://img-ask.csdn.net/upload/201605/10/1462868039_86482.png)
  • 写回答

1条回答 默认 最新

  • _flowers_ss 2016-05-10 08:17
    关注

    // Point2D的equals
    public boolean equals(Point2D p) {
    if (p instanceof Point3D) {
    return false;
    }else{
    return x == p.x && y == p.y;
    }

    // Point3D的equals
    public boolean equals(Point2D p) {
    if (p instanceof Point3D) {
    Point3D p3d = (Point3D)p;
    return x == p3d.x && y == p3d.y && z == p3d.z;
    }
    return false;
    }

    评论

报告相同问题?

悬赏问题

  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发