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条回答 默认 最新
关注让阿豪来帮你解答,本回答参考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对象数组进行各种操作,包括判断是否有相等的点、求指定点到其他点的距离以及找出距离最近的两个点。
解决 无用评论 打赏 举报