import java.util.*;
public class FindNearestPoint {
public static void main(String[] args){
Scanner buf=new Scanner(System.in);
System.out.println("Find Nearest Points");
System.out.println("Enter the number of points");
int number=buf.nextInt();//读取坐标的数量
double[][] points=new double[number][2];
System.out.print("Enter "+number+" points:");
for(int i=0;i<points.length;i++)
{//读取坐标
points[i][0]=buf.nextDouble();
points[i][1]=buf.nextDouble();
}
int p1=0,p2=1;
double shortestDistance=distance(points[p1][0],points[p1][1], points[p2][0],points[p2][1]);
//默认第一个坐标与第二坐标为最短距离
for(int i=0;i<points.length;i++) {
for (int j = i + 1; j < points.length; j++){//计算各个点之间的距离
double distance = distance(points[i][0], points[i][1], points[j][0], points[j][1]);
if (shortestDistance > distance) {//最短距离进行比较
p1 = i;//取第一个点x坐标
p2 = j;//取第二个点x坐标
shortestDistance=distance;
}
}
}
System.out.println("The closest two points are "+"("+points[p1][0]+","+points[p1][1]+
") and ("+points[p2][0]+","+points[p2][1]+")");
System.out.println("The shortest distance:"+shortestDistance);
}
public static double distance(double x1,double y1,double x2,double y2){//计算2个点的距离
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}
}
输出
输入
8
-1 3 -1 -1 1 1 2 0.5 2 -1 3 3 4 2 4 -0.5