题目:假设有一个集合的点,找出距离最近的两个点。
源代码:
import java.util.Scanner;
public class FindPoints {
public static void main(String args[]){
Scanner input = new Scanner(System.in);
System.out.print("输入数字个数:");
int numberOfPoints = input.nextInt();
//创建一个数组来存放数的坐标
double[][] points = new double[numberOfPoints][2];
System.out.print(numberOfPoints+" points:");
for(int i=0;i<points.length;i++){
points[i][0]=input.nextDouble();
points[i][1]=input.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;
p2=j;
shortestDistance=distance;
}
}
}
System.out.print("最近的两点是"+("("+points[p1][0]+","+points[p1][1]+")")+("("+points[p2][0]+","+points[p2][1]+")"));
}
//求两点之间的距离
private static double distance(double x1, double y1, double x2, double y2) {
return Math.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)) ;
}
}