定义Point类,每个点包含(x, y)坐标,利用随机函数产生10个点的(x, y)值,将创建的Point实例存入一个数组中,按与原点(0, 0)的距离由小到大的顺序输出所有的点及到原点的距离。
时间: 2024-11-06 09:14:59 浏览: 34
首先,我们可以在Java中定义一个名为`Point`的类,它有两个私有变量`x`和`y`表示坐标,并提供对应的getter和setter方法以及构造函数。接下来,我们将使用Java的Random类生成随机坐标,然后使用Collections.sort()对点按照距离排序并输出。
以下是实现这个功能的Java代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
// getters and setters
public double distanceFromOrigin() {
return Math.sqrt(x * x + y * y);
}
}
public class Main {
public static void main(String[] args) {
ArrayList<Point> points = new ArrayList<>();
Random random = new Random();
for (int i = 0; i < 10; i++) {
double x = random.nextDouble(); // 随机生成[0, 1)范围内的双精度数
double y = random.nextDouble();
Point point = new Point(x, y);
points.add(point);
}
Collections.sort(points, Comparator.comparingDouble(Point::distanceFromOrigin)); // 按照距离从小到大排序
for (Point p : points) {
System.out.println("Point (" + p.x + ", " + p.y + ") has a distance of " + p.distanceFromOrigin() + " from the origin.");
}
}
}
```
在这个程序中,我们首先生成了10个随机点,然后通过Comparator的lambda表达式按照`distanceFromOrigin()`方法的返回值(即点到原点的距离)进行排序。最后,逐个输出排序后的点及其与原点的距离。
阅读全文