编写一个比较器,用于比较Point对象与(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;
}
}
}
答案 0 :(得分:1)
点与原点之间的距离为sqrt(x平方+ y平方)。计算两个点的值,然后取差值进行比较。
答案 1 :(得分:0)
我相信你所做的是将点数与点数进行比较,而不是将其与原点进行比较。因此,在编码之前,您可以更好地理解所需内容。 无论如何,坐标(x1,y1)和(x2,y2)的两点之间的距离是 sqrt((x1-x2)^ 2 +(y1-y2)^ 2) 你案件中的一个坐标是(0,0)即原点。
答案 2 :(得分:0)
找到点的原点距离,例如:
double r1 = Math.sqrt(x1*x1 + y1*y1)
注意加倍,它不是int。然后:
return Double.compare(r1, r2);