任务描述中编写的Java方法给出的输出可能不正确

任务描述中编写的Java方法给出的输出可能不正确,java,Java,任务1 静态方法nearestPoint接受Point类型的points对象数组和一个Point类型的对象数组 点,并返回数组中最接近给定点的点。创建该方法 任务2 创建点类型的点对象数组和点类型的点对象数组。 使用“最近点”方法确定阵列中最靠近给定点的点 问题:在任务1中,我是否按照任务描述中的要求正确地实现了最接近点的方法? 我应该在该方法中声明一个对象数组而不是点p吗。 这是输出[1.0,2.0],我不确定这是否是正确的结果 任何提示,提示建议都很好。是的。根据任务1中对最近点方法的描述,

任务1

静态方法nearestPoint接受Point类型的points对象数组和一个Point类型的对象数组 点,并返回数组中最接近给定点的点。创建该方法

任务2

创建点类型的点对象数组和点类型的点对象数组。 使用“最近点”方法确定阵列中最靠近给定点的点

问题:在任务1中,我是否按照任务描述中的要求正确地实现了最接近点的方法? 我应该在该方法中声明一个对象数组而不是点p吗。 这是输出[1.0,2.0],我不确定这是否是正确的结果


任何提示,提示建议都很好。

是的。根据任务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;
   }