从一个文件中读取一个城市的名称,包括两个代表它们的距离的数字

2022-01-28 12:39:22 标签 java

我有一个程序,我必须计算两个“村庄”之间的最近距离从一个文本文件。该文件的存储方式为:

1 2 city1

3 4 city2

5 6 city3

7 8 city4

9 10 city5

输出如下:city1和city2最接近,距离为…

我有一个类Point:

static class Point {
    int x, y;
    
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
 
}

我如何有效地遍历这个文件,并将整数存储到点对象中,并找出哪些城市彼此更接近。

###我已经硬编码的值。< br / >

请从文件中读取并使用通用方法。< br / >

我希望这个逻辑是正确的

class Point {
    int x, y;
    String city;
    public Point(int x, int y, String city) {
        this.x = x;
        this.y = y;
        this.city = city;
        // getters and setters
    }
}
public static void main(){
    List<Point> list = new ArrayList<Point>();    
    list.add(new Point(1,2,city1));
    list.add(new Point(3,4,city2));
    list.add(new Point(5,6,city3));
    list.add(new Point(7,8,city4));
    list.add(new Point(9,10,city5));
    if(list.size() < 2){
        System.out.println("Can't find distance");
    }
    Point lowerPoint = null;
    Point upperPoint = null;
    else{
        int min = getDist(list.get(0), list.get(1));
        int dist = 0;
        for(int i = 2; i < list.size(); i++){
            dist = getDist(list.get(i-1), list.get(i));
            if(min > dist){
                min = dist;
                lowerPoint = list.get(i-1);
                upperPoint = list.get(i);
            }
        }
        System.out.println(min+" "+lowerPoint.getCity()+" "+ upperPoint.getCity());
    }
  
public int getDist(Point p1, Point p2){
    return Math.sqrt((p1.getX()-p2.getX())*(p1.getX()-p2.getX()) + (p1.getY()-p2.getY())*(p1.getY()-p2.getY()));
}

我建议你这么做:

创建一个City类,它有名称和xy位置。

那么我就会有一个方法返回从一个城市到另一个城市的距离。

它会被称为city1.getDistance(city2) where city1city1 and city2 are 是City class.类。

class City {
    int x, y;
    String name;
    
    public City(int x, int y, String name) {
        this.x = x;
        this.y = y;
        this.name = name;
    }
    
    public double getDistance(City c) {
        return Math.hypot(this.x-c.x,this.y-c.y);
    }
}

使用一个新的Scanner()读取值;查看如何使用它的文档。

然后使用new City(xy name)为每个实例赋值,并将它们存储在一个List<City>

然后迭代这些城市,记录到目前为止看到的最小的城市的距离。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码