`
1140566087
  • 浏览: 547678 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
博客专栏
2c4ae07c-10c2-3bb0-a106-d91fe0a10f37
c/c++ 入门笔记
浏览量:18076
3161ba8d-c410-3ef9-871c-3e48524c5263
Android 学习笔记
浏览量:309479
Group-logo
J2ME 基础学习课程集
浏览量:17993
A98a97d4-eb03-3faf-af96-c7c28f709feb
Spring 学习过程记录...
浏览量:17195
社区版块
存档分类
最新评论

平均距离

阅读更多
package com;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.text.DecimalFormat;
import java.util.ArrayList;

//已知平面上若干个点的坐标。
//需要求出在所有的组合中,4个点间平均距离的最小值(四舍五入,保留2位小数)。
//比如有4个点:a,b,c,d,则平均距离是指:ab, ac, ad, bc, bd, cd 这6个距离的平均值。
//每个点的坐标表示为:横坐标,纵坐标
//坐标的取值范围是:1~1000
//所有点的坐标记录在in.txt中,请读入该文件,然后计算。
//注意:我们测试您的程序的时候,in.txt 可能会很大,比如包含上万条记录。
//举例:
//如果,in.txt 内的值为:
//10,10
//20,20
//80,50
//10,20
//20,10
//则程序应该输出:
//11.38
public class MyPoint {
	
	private double x;
	private double y ;
	public MyPoint(){}
	public MyPoint(double x,double y){//传过来的是两个点
		this.x = x;
		this.y = y;
	}
	public static double getDistance(MyPoint p1,MyPoint p2){
		double dx = p1.x - p2.x;
		double dy = p1.y - p2.y;
		return Math.sqrt(dx*dx+dy*dy);
	}
	
	public static void main(String[] args){
		ArrayList<String> list = bufferedReader();
		zuhe(list);
	}
	
	//求所有点的组合
	public static void zuhe(ArrayList<String> list){
		double sum = 0;
		double show = 0;
		for(int i=0;i<list.size();i++){
			for(int j=i+1;j<list.size();j++){
				//得到每一种组合:求出每一组合的距离
				
				double x1 = Double.valueOf(list.get(i).split(",")[0]);
				double y1 = Double.valueOf(list.get(i).split(",")[1]);
				
				double x2 = Double.valueOf(list.get(j).split(",")[0]);
				double y2 = Double.valueOf(list.get(j).split(",")[1]);
				
				MyPoint p1 = new MyPoint(x1,y1);
				MyPoint p2 = new MyPoint(x2,y2);
				double temp = MyPoint.getDistance(p1, p2);
				show++;
				sum+=temp;
				System.out.println("点:("+x1+","+y1+")"+"的和点:("+x2+","+y2+")的距离为:"+temp);
			}
		}
		DecimalFormat df = new DecimalFormat("#0.00");
		
		System.out.println(df.format(sum/show));
	}
	
	//获取文件中的数据   点的个数
	public static ArrayList<String> bufferedReader(){
		File f = new File("src/com/in.txt");
		ArrayList<String> list = new ArrayList<String>();
		try{
			BufferedReader br = new BufferedReader(new FileReader(f));
			while(br.ready()){
				list.add(br.readLine());
			}
			br.close();
		}
		catch(Exception ex){
			ex.printStackTrace();
		}
		return list;
	}

}
分享到:
评论
1 楼 北月与南安 2019-05-15  
哥哥不要秀我,答案是11.38,你算出来36.43,要求N个点中,4个点的平均距离最小值

相关推荐

Global site tag (gtag.js) - Google Analytics