题目
以Point类为基础,定义一个平面中的Circle类:
编写一个无参的构造函数;编写一个有参的构造函数;在主函数中调用无参的构造函数生成圆的实例c1,调用有参的构造函数生成圆的实例c2,调用实例方法判断c1和c2是否相重叠。
主类:
package cn.ganggang;
public class TestMain {
public static void main(String[] args) {
Point point1 = new Point(3.4,7.8);
Point point2 = new Point(12.3,6.3);
Circle circle1 = new Circle(point1,3);
Circle circle2 = new Circle(point2,4);
if(circle1.toDetermineWhetherTheOverlap(circle2)==Circle.INTERSECT)
System.out.println("两圆形重叠");
else if(circle1.toDetermineWhetherTheOverlap(circle2)==Circle.PHASEUP)
System.out.println("两圆形相接");
else if(circle1.toDetermineWhetherTheOverlap(circle2)==Circle.SEPARATION)
System.out.println("两圆形分离");
}
}
Circle类:
package cn.ganggang; public class Circle { private Point startPoint; private double radius; public static final int INTERSECT = 0; //相交 public static final int PHASEUP = 1;//相接 public static final int SEPARATION = 2;//相离 public Circle() { super(); } public Circle(Point sPoint,double sRadius) { this.startPoint = sPoint; this.radius = sRadius; } public Point getStartPoint() { return startPoint; } public void setStartPoint(Point startPoint) { this.startPoint = startPoint; } public double getRadius() { return radius; } public void setRadius(double radius) { this.radius = radius; } public int toDetermineWhetherTheOverlap(Circle circle) { double twoRadius = this.radius+circle.radius; double centerSpace = startPoint.calculateTheDistance(circle.startPoint); if(twoRadius>centerSpace) return Circle.INTERSECT; else if(twoRadius==centerSpace) return Circle.PHASEUP; else return Circle.SEPARATION; } } class Point{ private double x; private double y; public Point(double xx,double yy) { this.x = xx; this.y = yy; } public double calculateTheDistance(Point p) { return Math.sqrt((this.x-p.x)*(this.x-p.x)+(this.y-p.y)*(this.y-p.y)); } }
运行结果: 两圆形分离