题目描述:
代码
public class Test10 {
public static void main(String[] args) {
Circle2D cl = new Circle2D(2,2,5.5);
System.out.println("The area and perimeter are "+cl.getArea()+" and "+cl.getPerimeter());
System.out.println(cl.contains(3, 3));
System.out.println(cl.contains(new Circle2D(4,5,10.5)));
System.out.println(cl.overlaps(new Circle2D(3,5,2.3)));
}
}
class Circle2D{
//数据域
private double x;
private double y;
private double radius;
//x,y,radius访问器
public double getX() {
return x;
}
public double getY() {
return y;
}
public double getRadius() {
return radius;
}
//构造器
public Circle2D()
{
this.x = 0;
this.y = 0;
this.radius = 1;
}
public Circle2D(double x, double y, double radius)
{
this.x = x;
this.y = y;
this.radius = radius;
}
//获得圆面积
public double getArea()
{
return Math.PI * radius * radius;
}
//获得圆周长
public double getPerimeter()
{
return 2 * Math.PI * radius;
}
//判断给定点是否在圆内
public boolean contains(double x, double y)
{
double distance = Math.sqrt((this.x - x) * (this.x - x) + (this.y - y) * (this.y - y));
if (distance >= radius)
return false;
return true;
}
//判断给定圆是否在圆内
public boolean contains(Circle2D circle)
{
double distance = Math.sqrt((this.x - circle.x) * (this.x - circle.x) + (this.y - circle.y) * (this.y - circle.y));
if(distance <= this.radius - circle.radius)
return true;
return false;
}
//判断给定圆是否与圆重叠
public boolean overlaps(Circle2D circle)
{
double distance = Math.sqrt((this.x - circle.x) * (this.x - circle.x) + (this.y - circle.y) * (this.y - circle.y));
if(distance > this.radius - circle.radius && distance < this.radius + circle.radius)
return true;
return false;
}
}
运行结果
The area and perimeter are 95.03317777109123 and 34.55751918948772
true
false
false