Java 点比较器

Java Point Comparator

编写一个比较器,根据点对象与原点 (0,0) 的距离来比较它们。离原点较近的点被认为先于离原点较远的点。

我只是想知道我是否在正确的轨道上……以及我遗漏了什么

public class PointComparator implements Comparator<Point> 
{
    public int compare(Point p1, Point p2)
    {
        int dx = p1.x - p2.x;
        if (dx == 0){
            int dy = p1.y - p2.y;
            return dy;
        }else{
            return dx;
        }
    }
}

该点到原点的距离为 sqrt(x 平方 + y 平方)。计算两个点的值并取差值进行比较。

我认为您所做的是将点一起进行比较,而不是将其与原点进行比较。所以你最好在编码之前了解你想要什么。 无论如何,坐标为 (x1,y1) 和 (x2,y2) 的两点之间的距离是 sqrt((x1-x2)^2 + (y1-y2)^2) 您的情况下的坐标之一是 (0,0) 即原点。

找出点到原点的距离,例如:

double r1 = Math.sqrt(x1*x1 + y1*y1)

注意double,不是int。那么:

return Double.compare(r1, r2);