砂糖橘子_ 2021-04-28 09:43 采纳率: 0%
浏览 367

1.设计一个Point类表示平面坐标系中的点。该类包括私有的double型的x和y属性。两个构造方法

1.设计一个Point类表示平面坐标系中的点。该类包括私有的double型的x和y属性。两个构造方法,一个是无参的构造方法,该方法中x和y的值为0;另外一个构造方法包含两个参数,分别为x和y赋值。为x和y属性提供setter和getter方法,重写Object类的equals方法。 编写一个类,包含如下功能:(1)定义一个数组,数组的长度是50,数组元素是Point的对象。Point对象的x和y值随机赋值。 (2)判断数组中是否有两个相等的点(x和y的值相等) (3)指定一个点,求该点到其他点的距离 (4)求距离最近的两个点。
  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-07-14 20:15
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    首先,我们需要定义一个Point类表示平面坐标系中的点。代码如下:
    public class Point {
        private double x;
        private double y;
        public Point() {
            this.x = 0;
            this.y = 0;
        }
        public Point(double x, double y) {
            this.x = x;
            this.y = y;
        }
        public double getX() {
            return x;
        }
        public void setX(double x) {
            this.x = x;
        }
        public double getY() {
            return y;
        }
        public void setY(double y) {
            this.y = y;
        }
        @Override
        public boolean equals(Object obj) {
            if (this == obj) {
                return true;
            }
            if (obj == null || getClass() != obj.getClass()) {
                return false;
            }
            Point point = (Point) obj;
            return Double.compare(point.x, x) == 0 && Double.compare(point.y, y) == 0;
        }
    }
    

    接下来,我们需要编写一个类来实现上述功能:

    import java.util.Random;
    public class PointOperations {
        private static final int ARRAY_SIZE = 50;
        public static void main(String[] args) {
            Point[] points = new Point[ARRAY_SIZE];
            Random random = new Random();
            // 随机生成Point对象并放入数组中
            for (int i = 0; i < ARRAY_SIZE; i++) {
                double randomX = random.nextDouble();
                double randomY = random.nextDouble();
                points[i] = new Point(randomX, randomY);
            }
            // 判断数组中是否有两个相等的点
            for (int i = 0; i < ARRAY_SIZE; i++) {
                for (int j = i + 1; j < ARRAY_SIZE; j++) {
                    if (points[i].equals(points[j])) {
                        System.out.println("数组中存在相等的点: (" + points[i].getX() + ", " + points[i].getY() + ")");
                        break;
                    }
                }
            }
            // 指定一个点,求该点到其他点的距离
            Point specifiedPoint = new Point(0.5, 0.5);
            for (int i = 0; i < ARRAY_SIZE; i++) {
                double distance = calculateDistance(specifiedPoint, points[i]);
                System.out.println("点(" + points[i].getX() + ", " + points[i].getY() + ")到指定点的距禫: " + distance);
            }
            // 求距离最近的两个点
            double minDistance = Double.MAX_VALUE;
            Point closestPoint1 = null;
            Point closestPoint2 = null;
            for (int i = 0; i < ARRAY_SIZE; i++) {
                for (int j = i + 1; j < ARRAY_SIZE; j++) {
                    double distance = calculateDistance(points[i], points[j]);
                    if (distance < minDistance) {
                        minDistance = distance;
                        closestPoint1 = points[i];
                        closestPoint2 = points[j];
                    }
                }
            }
            System.out.println("距離最近的两個點是: (" + closestPoint1.getX() + ", " + closestPoint1.getY() + ")和(" + closestPoint2.getX() + ", " + closestPoint2.getY() + ")");
        }
        private static double calculateDistance(Point point1, Point point2) {
            return Math.sqrt(Math.pow(point1.getX() - point2.getX(), 2) + Math.pow(point1.getY() - point2.getY(), 2));
        }
    }
    

    通过上面的代码,我们可以实现对50个随机生成的Point对象数组进行各种操作,包括判断是否有相等的点、求指定点到其他点的距离以及找出距离最近的两个点。

    评论

报告相同问题?