java mypoint_java实现最近距离

已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,

距离最近的两个点间的最小距离。请补全缺失的代码。

把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

/*

*/

import java.util.ArrayList;

import java.util.List;

class MyPoint{

private double x; // 横坐标

private double y; // 纵坐标

public MyPoint(double x, double y){

this.x = x;

this.y = y;

}

public static double distance(MyPoint p1, MyPoint p2){

double dx = p1.x - p2.x;

double dy = p1.y - p2.y;

return Math.sqrt(dx*dx + dy*dy);

}

/*

lst中含有若干个点的坐标

返回其中距离最小的点的距离

*/

public static double getMinDistance(List lst){

if(lst==null || lst.size()<2) return Double.MAX_VALUE;

double r = Double.MAX_VALUE;

MyPoint p0 = lst.remove(0);

for(int i=0; i

MyPoint p = lst.get(i);

double d = MyPoint.distance(p0,p);

if(d

}

double d2 = getMinDistance(lst);

return d2 < r ? d2 : r;

}

}

64

class Demo04{

public static void main(String[] args){

List list = new ArrayList() ;

list.add(new MyPoint(31,4));

list.add(new MyPoint(1,2));

list.add(new MyPoint(1,1));

list.add(new MyPoint(1,4));

System.out.println(MyPoint.getMinDistance(list));

}

}

运行结果:

1.0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值