*8.21(中心城市)给定一组城市,中心城市是和其它所有城市具有最短距离的城市。编写一个程序,提示用户输入城市数目以及位置(坐标),找到中心城市以及与其他城市总距离

  • 题目
    • 题目描述与运行示例
    • 破题
  • 代码

题目

题目描述与运行示例

*8.21(中心城市)给定一组城市,中心城市是和其它所有城市具有最短距离的城市。编写一个程序,提示用户输入城市数目以及位置(坐标),找到中心城市以及与其他城市总距离
下面是一组运行示例:

Enter the number of cities: 5
Enter the coordinates of the cities:
2.5 5 5.1 3 1 9 5.4 55 5.5 2.1
The central cith is at (2.5, 5.0)
The total distance to all other cities is 60.81

破题

  1. 主方法:输出提示语句
  2. 主方法:从控制台获取城市数量cities
  3. 主方法:声明一个double型二维数组loc,长度为cities * 2
  4. 主方法:输出提示语句
  5. 主方法:使用循环从控制台获取城市坐标
  6. 主方法:调用寻找中心城市的方法,传入loc数组,返回int型(中心城市下标/loc行下标)
  7. 主方法:输出中心城市坐标
  8. 主方法:调用求某个城市与其他所有城市距离和的方法,传入loc数组、指定的城市下标(loc行下标),返回距离值
  9. 主方法:输出距离值
  10. 寻找中心城市方法:传入double型二维数组、返回int型
  11. 寻找中心城市方法:声明一个一维数组,长度为传入的二维数组长-1
  12. 寻找中心城市方法:遍历二维数组行下标,调用求某个城市与其他所有城市距离和的方法并传入loc数组与行下标,赋值给刚刚声明的一维数组
  13. 寻找中心城市方法:找一维数组最小值下标
  14. 寻找中心城市方法:返回该下标
  15. 求某个城市与其他所有城市距离和的方法:新建一个double型对象sum以保存和
  16. 求某个城市与其他所有城市距离和的方法:遍历传入的二维数组,求被遍历的元素与指定下标元素之间的距离,并与sum相加
  17. 求某个城市与其他所有城市距离和的方法:返回sum

代码

import java.util.Scanner;public class Test8_21 {public static void main(String[] args) {//1. 主方法:输出提示语句System.out.print("Enter the number of cities: ");//2. 主方法:从控制台获取城市数量citiesScanner input = new Scanner(System.in);int cities = input.nextInt();//3. 主方法:声明一个double型二维数组loc,长度为cities * 2double[][] loc = new double[cities][2];//4. 主方法:输出提示语句System.out.println("Enter the coordinates of the cities: ");//5. 主方法:使用循环从控制台获取城市坐标for (int i = 0 ; i < cities ; i++){for (int j = 0 ; j < 2 ; j++){loc[i][j] = input.nextDouble();}}//6. 主方法:调用寻找中心城市的方法,传入loc数组,返回int型(中心城市下标/loc行下标)int index = center_city(loc);//7. 主方法:输出中心城市坐标System.out.println("The central city is at (" + loc[index][0] + ", " + loc[index][1] + ")");//8. 主方法:调用求某个城市与其他所有城市距离和的方法,传入loc数组、指定的城市下标(loc行下标),返回距离值double distance = others_distance(loc, index);//9. 主方法:输出距离值System.out.printf("The total distance to all other cities is %.2f", distance);}//10. 寻找中心城市方法:传入double型二维数组、返回int型public static int center_city(double[][] loc){//11. 寻找中心城市方法:声明一维数组,长度为 loc.lengthdouble[] distance_sum = new double[loc.length];//12. 寻找中心城市方法:遍历二维数组行下标,调用求某个城市与其他所有城市距离和的方法并传入loc数组与行下标,赋值给刚刚声明的一维数组for (int i = 0 ; i < loc.length ;i++){distance_sum[i] = others_distance(loc, i);}//13. 寻找中心城市方法:找最小值下标int index = 0;double min = 0;for (int i = 0 ; i < distance_sum.length ; i++){if ( min > distance_sum[i] ){index = i;min = distance_sum[i];}}//14. 寻找中心城市方法:返回该下标return index;}public static double others_distance(double[][] loc, int index){//15. 求某个城市与其他所有城市距离和的方法:新建一个double型对象sum以保存和double sum = 0;//16. 求某个城市与其他所有城市距离和的方法:遍历传入的二维数组,求被遍历的元素与指定下标元素之间的距离,并与sum相加for (int i = 0 ; i < loc.length ; i++){sum += Math.sqrt( (loc[i][0]-loc[index][0]) * (loc[i][0]-loc[index][0]) +(loc[i][1]-loc[index][1]) * (loc[i][1]-loc[index][1]) );}//17. 求某个城市与其他所有城市距离和的方法:返回sumreturn sum;}
}

Java黑皮书课后题第8章:*8.21(中心城市)给定一组城市,中心城市是和其它所有城市具有最短距离的城市。编写一个程序,提示用户输入城市数目以及位置(坐标),找到中心城市以及与其他城市总距离相关推荐

  1. Java黑皮书课后题第5章:**5.45(统计:计算平均值和标准方差)在商务应用中……编写一个程序,提示用户输入10个数字,然后运用下面的公式,显示这些数字的平均值以及标准方差

    5.45(统计:计算平均值和标准方差)在商务应用中--编写一个程序,提示用户输入10个数字,然后运用下面的公式,显示这些数字的平均值以及标准方差 题目 题目描述 破题 运行示例 代码 题目 题目描述 ...

  2. Java黑皮书课后题第7章:7.10(找出最小元素的下标)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素下标。编写测试程序,提示用户输入10个数字,调用这个方法返回最小值的下标(多个则最小

    7.10(找出最小元素的下标)使用下面的方法头编写一个方法,求出一个整数数组中的最小元素下标.编写测试程序,提示用户输入10个数字,调用这个方法返回最小值的下标(多个则返回最小的下标) 题目 题目描述 ...

  3. Java黑皮书课后题第8章:*8.2(求矩阵对角线元素的和)使用下面的方法头编写一个方法,求n*n的double类型矩阵中主对角线上所有数字的和。编写一个程序,读取一个4*4的矩阵,显示主对角线和

    *8.2(求矩阵对角线元素的和)使用下面的方法头编写一个方法,求n*n的double类型矩阵中主对角线上所有数字的和.编写一个程序,读取一个4*4的矩阵,显示主对角线和 题目 题目描述与运行示例 破题 ...

  4. Java黑皮书课后题第8章:*8.34(几何:最右下角的点)在计算几何中经常需要从一个点集中找到最右下角的点。编写一个测试程序,提示用户输入6个点的坐标,然后显示最右下角的点

    *8.34(几何:最右下角的点)在计算几何中经常需要从一个点集中找到最右下角的点.编写一个测试程序,提示用户输入6个点的坐标,然后显示最右下角的点 题目 题目描述与运行示例 破题 代码 题目 题目描述 ...

  5. Java黑皮书课后题第6章:**6.31(金融应用:信用卡号的合法性验证)和**6.32 编写程序,提示用户输入一个long型整数的信用卡号码,显示这个数字是合法的还是非法的

    6.31(金融应用:信用卡号的合法性验证)编写程序,提示用户输入一个long型整数的信用卡号码,显示这个数字是合法的还是非法的 6.31题目 题目描述 破题 6.31代码 6.32 代码 运行实例 6 ...

  6. Java黑皮书课后题第11章:11.3(Account类的子类)在编程练习题9.7中定义了一个Account类来对一个银行账户建模。一个账户有账号、余额、年利率、开户日期等属性,以及存款和取款等方法

    续标题:创建支票账户checking account和储蓄账户saving account两个子类.支票账户有一个透支限定额,但储蓄账户不能透支 题目(续) 题目中提到的编程练习题9.7:以下代码直接 ...

  7. Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开

    6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数.编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开 题目 题目描述 破题 代码 题目 题目描述 ...

  8. Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类)设计一个名为Person的类及其两个名为Student和Employee的子类

    Java黑皮书课后题第11章:11.2(Person Student Employee Faculty Staff类) 题目 缺陷 UML图 代码 Test02_MyDate.java:用于参考的My ...

  9. Java黑皮书课后题第10章:**10.25(新的字符串split方法)String类中的split方法会返回一个字符串数组,该数组是由分隔符分隔开的子串构成的

    Java黑皮书课后题第10章:**10.25(新的字符串split方法) 题目 代码 运行实例 题目 代码 public class Test25 {public static String[] sp ...

  10. Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字

    Java黑皮书课后题第10章:10.21(被5或6整除)找出能被5或6整除的大于Long.MAX_VALUE的前10个数字 题目 代码 结果 题目 都在上面 代码 import java.math.B ...

最新文章

  1. python 时间time()及日期date()函数
  2. 某县百姓百事110便民服务管理系统(1)——项目总结
  3. boost::geometry::model::d3::point_xyz用法的测试程序
  4. struts2类型转换+校验
  5. 网络请求之优化参数添加工具类自定义Map类
  6. selenium的安装
  7. manjaro设置java_manjaro 深度学习编程环境搭建
  8. 2021-0413梦笔记
  9. python比java_对比java和python对比
  10. It技能图谱(13张)
  11. 如何将多个TXT合并成一个TXT,文件名称提取
  12. win10录屏_关于使用Win10自带录屏工具小技巧
  13. 如何获得一个RAC Oracle数据库(从Github - oracle/docker-images) - 本地版
  14. python lncrna_[转载]lncrna分析流程
  15. Windows如何彻底删除.sys后缀的流氓文件
  16. Cesium视频融合
  17. Win10 环境下 Mingw-w64,CMake,CLion 安装及配置 C/C++ 和 OpenCV 运行环境
  18. java改变背景图片大小,设置背景图片大小相同的的Java应用程序窗口/屏幕
  19. 三联动 支持ie6,ie7 省,市,区
  20. 转 GitHub上史上最全的Android开源项目分类汇总

热门文章

  1. 问题 A: 青蛙约会(数学)
  2. 「应用管理与交付」为什么会成为云原生新的价值聚焦点?
  3. 植树节快乐|用小学数学到高数的知识思考种树,你能种到哪一步?
  4. 函数计算FC让游戏群采集营销数据滴水不漏
  5. 融合、协同系统的边缘云原生架构演进和实践
  6. 朱峰谈概念设计(四):游戏和电影的不同
  7. 实时光线追踪技术:业界发展近况与未来挑战
  8. 浅谈手机游戏测试的要点
  9. SQL基础【二十、索引】(超细致版本,前理论,后实践,应对sql面试绰绰有余)
  10. Oracle之AUTHID CURRENT_USER