首页
登录
从业资格
阅读以下说明和 Java 程序,填充程序中的空缺,将解答填入答题纸的对应栏内。
阅读以下说明和 Java 程序,填充程序中的空缺,将解答填入答题纸的对应栏内。
资格题库
2022-08-02
46
问题
阅读以下说明和 Java 程序,填充程序中的空缺,将解答填入答题纸的对应栏内。【说明】下面的程序用来计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。程序运行时,先输入点的个数和一组互异的点的坐标,通过计算每对点之间的距离,从而确定出距离最近的点对。例如,在图6-1所示的8个点中,点(1,1)与(2,0.5)是间距最近的点对。
【Java代码】import java.util.Scanner;class GPoint {private double x ,y;public void setX(double x) { this.x = x; }public void setY(double y) { this.y = y; }public double getX( ) { return this.x; }public double getY() { return this.y; }}class FindNearestPoints {public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.print(" 输入点的个数: ");int numberOfPoints = input.nextInt( );(1)points = new GPoint[numberOfPoints); //创建保存点坐标的数组System.out.print("请输入" + numberOfPoints + "个点的坐标: ");for (int i = 0; i < points.length; i++) {points
= (2);points
.setX(input.nextDouble( ));points
.setY(input.nextDouble( ));}FindNearestPoints fnp = new FindNearestPoints( );int p1 = 0 ,p2 = 1; / / p1 和 p2 用于表示距离最近的点对在数组中的下标double shortestDistance= fnp.getDistance (points [p1],points[p2]); //计算每一对点之间的距离for (int i = 0; i < points.length; i++){for (int j = i + 1; j < (3); j++){double tmpDistance = fnp.(4)//计算两点间的距离 if ( (5)){p1= i;p2 = j;shortestDistance = tmpDistance; } } } System.out.println(" 距离最近的点对是(" + points[p1].getX( ) + "," + points[p1].gety( ) + ")和(" + points[p2] .getX( ) + ", " + points[p2] .gety( ) + ")"); } public double getDistance(GPoint pt1,GPoint pt2) { return Math. sqrt ((pt2.getX ( ) - pt1.getX ( )) * (pt2.getX ( ) -pt1.getX ( )) + (pt2.gety( ) - pt1.getY( )) * (pt2.getY( ) - pt1.getY( ))); }}
选项
答案
解析
(1) GPoint[](2) new GPoint()(3) points .length 或 numberOfPoints(4) getDistance(points
,points [j])(5) shortestDistance >tmpDistance本题考查 Java 语言程序设计的能力,涉及类、对象、方法的定义和相关操作。要求考生根据给出的案例和执行过程说明,认真阅读理清程序思路,然后完成题目。先考察题目说明。计算平面或空间中点之间的距离是目前很多应用中需要的,如GPS计算等。本题目简化了点之间距离的要求,其主要任务是计算并寻找平面坐标系中给定点中最近的点对(若存在多对,则输出其中的一对即可)。数轴上两点之间的距离等于相应两数差的绝对值,而平面坐标系中两点之间的距离等于相应两点的横坐标差和纵坐标差的平方和的算数平方根。假设平面左边系中的两点P1(X1,Yl)和P2(X2 ,Y2) ,两者之间的距离
如题中图6-1 所示的8个点中,点 (1,1) 和 (2,0.5) 之间的距离为
根据说明,点是一种类型,设计为类GPoint;寻找点之间的距离设计为FindNearestPoints ,整体主逻辑代码在其中的main方法中实现。类设计时,一般将属性 设置为private ,而对其的获取和更改等操作通过其中public方法进行。因此,在GPoint 设计时,将x和y坐标设计为private属性,将读取和设置x和y坐标的值设计相应的get 和set方法:在设计寻找距离最近的点的类 FindNearestPoints 时,其主要方法包括计算两个点之间的距离方法getDistance ,将两GPoint类的对象作为 distance方法的参数传递。FindNearestPoints中的main方法执行控制流程,在程序运行时,先输入点的个数,创建相应大小的数组,再输入相应个数的一组互异的点的坐标,将点保存在一个数组 points中。Java中对象数组的创建方式为:ClassName[] varName = new ClassName[numberOfArray];或者:ClassName varName[] = new ClassName[numbe rOfArray];然后输入相应个数的互异的点的坐标,存入点数组,然后通过计算每对点之间的距离,从而确定出距离最近的点对。其计算方式是:预设定第一次参与运算的两个点之间的距离为最短距离,然后计算每一对点之间的距离,其计算过程为从第一个点开始依次和其后所有的点之间调用两点之间距离计算函数计算其他点之间距离,每次计算和设定的最短距离进行比较,如果比当前最短距离短,则更新最短距离并记录相应的点。最后输出所记录的最短距离和相应的点。因此空(1)需要声明GPoint类型的对象数组,即为GPoint[]; 空(2)需要对数组中的每个对象进行初始化,即new GPoint(); 空(3)处判定是否所有与当前点还没有比较过的点之间的距离都计算完成,因为当前点和在数组前面的点的比较在前面计算时已经计算过,所以从和后一个点计算直到数组的最后一个点计算完成,即j<points.length,即空(3)为 points.length;空(4)处调用 getDistance 方法,计算当前循环的两个点之间的距离,即 getDistance(points
,points[j]);空(5)处通过判定计算出的当前两个点之间的距离和当前最短距离,来判定是否需要更新当前最短距离,即shortestDistance>tmpDistance 。
转载请注明原文地址:https://tihaiku.com/congyezige/2427344.html
本试题收录于:
初级程序员题库软件水平考试初中高级分类
初级程序员
软件水平考试初中高级
相关试题推荐
下列选项中,属于BIM协调性功能之一,并且该功能通过BIM三维可视化控件及程序自
下列哪种操作方式不能在界面中显示出属性面板?()A.在应用程序菜单中单击【选项】
UML是一种()。A.面向对象的程序设计语言 B.面向过程的程序设计语言 C
若程序P经编译并连接后可执行,则()。A.P是正确的程序 B.P中没有语法
若程序中定义了局部变量与全局变量,则()。A.在函数内只能访问局部变量,而不能访
若程序中使用的变量未设置初始值,则()。A.编译时会一定出错 B.运行时一定出
电子邮件应用程序利用POP3协议()。A.创建邮件 B.加密邮件 C.发送邮
著作权法中,计算机软件著作权保护的对象是()。A.硬件设备驱动程序 B.计算机
下面程序在IE浏览器中的显示结果为()。 <html> <head><m
下列选项中不属于我国著作权法所保护的作品是()。A.计算机程序 B.计算机保护
随机试题
Thenativesarenotedfortheir______andkindnesseventostrangers.A、hostilit
AlongtimeaidetoPresidentBushwhowroteoccasionalguestcolumnsforhi
______isoftenmoredifficulttofindtrainedmenthantogetfinancialsupport
按照作业成本管理的过程观,生产分析的内容主要包括()。A.成本动因分析 B.作
某省医学院的刘教授计划与附属医院的张医师共同对一种治疗肝癌新药的疗效进行研究。初
在平仓阶段,期货投机者应该掌握的原则有()。A.灵活运用止损指令 B.平均
连日来,强麦交易活跃,持仓不断增加,多空双方严重对峙,市场风险骤然加大。期货交易
双代号网络计划中,当某网络计划的计算工期等于计划工期时,关于工作总时差和自由时差
混凝土面板宜采用单层双向钢筋,钢筋宜置于面板截面()。A.边缘部位 B.上部
实行招标的项目,其工程合同价款应在中标通知书发出之日起()天内,由承发包双方依据
最新回复
(
0
)