Point2D
1.问题 编写一个Point2D的用例,从命令行里接收一个整数。在单位正方形中生成N个随机点,然后计算两点之间的最近距离
package com.yui.day17;
import java.math.BigDecimal;
import java.util.Scanner;
import org.junit.Test;
public class Point2D {
@Test
public void run(){
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
double min = 2.0;
point[] pArr = GetPointArr(N);
System.out.println(pArr);
for(int i=0;i<pArr.length;i++){
for(int j=i+1;j<pArr.length;j++){
//System.out.println(pArr[i]+","+pArr[j]);
double temp = range(pArr[i], pArr[j]);
//System.out.println(temp);
/*if(compare(min,temp)) {
System.out.println("=====");
min = temp;
} */
if(min>temp) min = temp;
}
}
System.out.println(min);
}
@Test
public void run2(){
double d1 = 0.0d;
double d2 = 0.000000000000002;
System.out.println(compare(d1,d2));
}
public point[] GetPointArr(int N){
if(N<=1) throw new RuntimeException("输入的N必须大于1");
point[] pArr = new point[N];
for(int i=0;i<N;i++){
point temp_point = new point(getRandom(),getRandom());
pArr[i] = temp_point;
}
return pArr;
}
public Double getRandom(){
return Math.random();
}
public double range(point p1,point p2){
return Math.pow((p1.getX() - p2.getX()),2)+Math.pow((p1.getY() - p2.getY()),2);
}
public boolean compare(double d1,double d2){
BigDecimal data1 = new BigDecimal(d1);
BigDecimal data2 = new BigDecimal(d2);
return data1.compareTo(data2)>0?true:false;
}
}
class point{
private double x;
private double y;
point(double x,double y){
this.x = x;
this.y = y;
}
public double getX() {
return x;
}
public double getY() {
return y;
}
@Override
public String toString() {
return "point [x=" + x + ", y=" + y + "]";
}
}