You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现两点距离计算、Circle类contains与overlaps方法求助

修正方案

  • 首先修正Point类的distance方法,两点距离公式为√[(x₁-x₂)² + (y₁-y₂)²],你当前的实现没有计算当前点和传入点的坐标差,逻辑错误。
  • 修正不符合规范的setter方法,setter需要接收参数修改对应属性值,你原代码的setter逻辑和getter完全重复。
  • 实现Circle.contains():判断目标点到圆心的距离 ≤ 圆半径即可。
  • 实现Circle.overlaps():判断两个圆心的距离 ≤ 两个圆半径之和即可。
  • 补充原代码缺失的大括号,将内部类改为静态类适配静态main方法的调用要求。
public class Question03 {

    public static void main(String[] args) {
        Circle c1 = new Circle(new Point(0, 0), 1.0);
        System.out.println(c1.getArea());
        Circle c2 = new Circle(new Point(1, 0), 1.0);
        System.out.println(c2.getArea());
        System.out.println(c1.getCenter().distance(c2.getCenter()));
        System.out.println(c1.contains(new Point(0, 0.5)));
        System.out.println(c1.overlaps(c2));
        Circle c3 = new Circle(new Point(0, 4), 1.0);
        System.out.println(c3.contains(new Point(0, 0)));
        System.out.println(c3.overlaps(c1));
    }

    static class Circle {
        Point center;
        double radius;

        Circle(Point center, double radius) {
            this.center = center;
            this.radius = radius;
        }

        public Point getCenter() {
            return this.center;
        }

        public double getRadius() {
            return this.radius;
        }

        public void setCenter(Point center) {
            this.center = center;
        }

        public void setRadius(double radius) {
            this.radius = radius;
        }

        public double getArea() {
            return Math.PI * radius * radius;
        }

        public double getPerimeter() {
            return Math.PI * (radius * 2);
        }

        public boolean contains(Point p) {
            return center.distance(p) <= radius;
        }

        public boolean overlaps(Circle c) {
            double centerDistance = this.center.distance(c.getCenter());
            return centerDistance <= this.radius + c.getRadius();
        }
    }

    static class Point {
        double x;
        double y;

        Point(double x, double y) {
            this.x = x;
            this.y = y;
        }

        public double getX() {
            return this.x;
        }

        public double getY() {
            return this.y;
        }

        public void setX(double x) {
            this.x = x;
        }

        public void setY(double y) {
            this.y = y;
        }

        public double distance(Point p) {
            double dx = this.x - p.getX();
            double dy = this.y - p.getY();
            return Math.sqrt(dx * dx + dy * dy);
        }
    }
}

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:27:04