任务描述中编写的Java方法给出的输出可能不正确
任务1 静态方法nearestPoint接受Point类型的points对象数组和一个Point类型的对象数组 点,并返回数组中最接近给定点的点。创建该方法 任务2 创建点类型的点对象数组和点类型的点对象数组。 使用“最近点”方法确定阵列中最靠近给定点的点 问题:在任务1中,我是否按照任务描述中的要求正确地实现了最接近点的方法? 我应该在该方法中声明一个对象数组而不是点p吗。 这是输出[1.0,2.0],我不确定这是否是正确的结果任务描述中编写的Java方法给出的输出可能不正确,java,Java,任务1 静态方法nearestPoint接受Point类型的points对象数组和一个Point类型的对象数组 点,并返回数组中最接近给定点的点。创建该方法 任务2 创建点类型的点对象数组和点类型的点对象数组。 使用“最近点”方法确定阵列中最靠近给定点的点 问题:在任务1中,我是否按照任务描述中的要求正确地实现了最接近点的方法? 我应该在该方法中声明一个对象数组而不是点p吗。 这是输出[1.0,2.0],我不确定这是否是正确的结果 任何提示,提示建议都很好。是的。根据任务1中对最近点方法的描述,
任何提示,提示建议都很好。是的。根据任务1中对最近点方法的描述,您的实现似乎很好。但是,可以从1而不是0开始for循环变量i,因为在第一次迭代中检查给定点到数组中第一个点的距离
public class Point{
private double x;
private double y;
public Point (double x, double y) {
this.x = x;
this.y = y;
}
public double getX () {
return this.x;
}
public double getY () {
return this.y;
}
// distance returns the distance between this point and a given point
public double distance (Point p) {
return Math.sqrt ((p.x - this.x) * (p.x - this.x) +
(p.y - this.y) * (p.y - this.y));
}
public String toString(){
return "[" + this.x +","+this.y +"]";
}
public static Point nearestPoint(Point[] points, Point point){
Point p = points[0];
for(int i = 0; i < points.length; i++){
if(points[i].distance(point) < p.distance(point)){
p = points[i];
}
}
return p;
}
public static void main(String[] args){
Point[] points = {new Point(1,2),
new Point(2,3),
new Point(5,2)};
Point point = new Point (1,2);
Point nearestPoint = nearestPoint(points,point);
System.out.println(nearestPoint);
}
}
您的输出也很好,因为任何一点都离它最近。请编辑答案并清楚地解释您的实现失败的原因;就像我期望的那样。。。但是。。。相反,给Point类一个合适的公共字符串toString方法。请查看中的答案以了解有关此项的详细信息。@HovercraftFullOfEels我已添加到字符串中,请现在查看。如果我需要更多的改变,请告诉我。谢谢。问题重新开始了。我觉得这是正确的。为什么不呢?还有什么比1,2更接近1,2的呢?
public static Point nearestPoint(Point[] points, Point point) {
Point p = points[0];
for (int i = 1; i < points.length; i++) {
if (points[i].distance(point) < p.distance(point)) {
p = points[i];
}
}
return p;
}