ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java题目集7-9总结

2021-12-18 21:32:17  阅读:119  来源: 互联网

标签:总结 输出 题目 卡片 格式 java 图形 输入


前言:

一学期的java课程学习已经接近尾声了,从这个课程中我学到许多,我从一开始的面向过程的思想慢慢转变成面向对象的思想,现在我看来,实现不需要重复或修改的功能时用面向过程的思想很好,但一旦涉及到修改,添加新的功能时还是要用面向对象的思想,这不仅可以解决许多看起来十分复杂的问题,还能让这些问题的脉络看起来清晰,而不会像面向过程的思想那样写完只有自己看得懂,甚至几天后自己也忘了怎么写的。

第七次题目集主要知识点是对类的继承、多态性使用方法以及接口的应用,两道题目都在考查这些知识点,并且第二题就是在第一题的基础上进行修改,多实现一个把相同的类发在同一个组里的功能,题量少,但是要想的东西挺多的,总体来说难度并不高,唯一让我觉得有问题的地方就是在sort分类时,我明明写的和老师课上演示的按面积排序的圆代码差不多,我却错了,直到现在我也没搞清楚,后来我直接换成了其他类中的排序方法,才终于写完了这一次题目集。

第八次题目集主要知识点对多个类之间的联系,比如继承,聚合,组合,依赖等,我之前对这几种类之间的关系理解的不是很到位。直到写这一次题目集,我才正视这个问题。我通过自己写一些测试代码和查阅网上的聚合,组合的实例代码,慢慢搞清楚了依赖其实就是在一个类的方法中引用另一个类,甚至不用在自己的属性里加上这么一个类,它们的关联仅仅就是这个方法;聚合其实就是在一个类中要把一个其他类作为他的属性,并且这个类可以说是它的一部分,但没有说没有谁另一个就会不存在;而组合可以说在一个类在另一个中是不可或缺的,它们彼此互相依赖,会互相影响,比如人和心脏;搞清楚这些之后,我写这道题目就十分迅速了,基本没有卡住的地方。

第九次题目集主要知识点是对上一次题目的修改,让它的功能更加丰富,比如可以借贷,可以跨行取钱了,我一开始想的十分简单,后面才发现,这题目里的坑还真不少。总体来说,难度不高,但是十分繁琐,这让我意识到第八次题目集我的代码还是存在不少问题的,比如明明就是加一个功能和修改一个功能,我却修改了太多代码。

 

设计与分析:

①题目集7(7-1)、(7-2)两道题目的递进式设计分析总结

7-1 图形卡片排序游戏 

掌握类的继承、多态性使用方法以及接口的应用。详见作业指导书

输入格式:

  • 首先,在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片。各数字之间以一个或多个空格分隔,以“0”结束。例如: 1 3 4 2 1 3 4 2 1 3 0
  • 然后根据第一行数字所代表的卡片图形类型,依次输入各图形的相关参数,例如:圆形卡片需要输入圆的半径,矩形卡片需要输入矩形的宽和长,三角形卡片需要输入三角形的三条边长,梯形需要输入梯形的上底、下底以及高。各数据之间用一个或多个空格分隔。

输出格式:

  • 如果图形数量非法(小于0)或图形属性值非法(数值小于0以及三角形三边不能组成三角形),则输出Wrong Format
  • 如果输入合法,则正常输出,所有数值计算后均保留小数点后两位即可。输出内容如下:
  1. 排序前的各图形类型及面积,格式为图形名称1:面积值1图形名称2:面积值2 …图形名称n:面积值n ,注意,各图形输出之间用空格分开,且输出最后存在一个用于分隔的空格;
  2. 排序后的各图形类型及面积,格式同排序前的输出;
  3. 所有图形的面积总和,格式为Sum of area:总面积值

设计的类图 

 

7-2 图形卡片分组游戏 

掌握类的继承、多态性使用方法以及接口的应用。 具体需求参考作业指导书。

输入格式:

  • 在一行上输入一串数字(1~4,整数),其中,1代表圆形卡片,2代表矩形卡片,3代表三角形卡片,4代表梯形卡片。各数字之间以一个或多个空格分隔,以“0”结束。例如:1 3 4 2 1 3 4 2 1 3 0

  • 根据第一行数字所代表的卡片图形类型,依次输入各图形的相关参数,例如:圆形卡片需要输入圆的半径,矩形卡片需要输入矩形的宽和长,三角形卡片需要输入三角形的三条边长,梯形需要输入梯形的上底、下底以及高。各数据之间用一个或多个空格分隔。

输出格式:

  • 如果图形数量非法(<=0)或图形属性值非法(数值<0以及三角形三边不能组成三角形),则输出Wrong Format

  • 如果输入合法,则正常输出,所有数值计算后均保留小数点后两位即可。输出内容如下:

  1. 排序前的各图形类型及面积,格式为[图形名称1:面积值1图形名称2:面积值2 …图形名称n:面积值n ],注意,各图形输出之间用空格分开,且输出最后存在一个用于分隔的空格,在结束符“]”之前;

  2. 输出分组后的图形类型及面积,格式为[圆形分组各图形类型及面积][矩形分组各图形类型及面积][三角形分组各图形类型及面积][梯形分组各图形类型及面积],各组内格式为图形名称:面积值。按照“Circle、Rectangle、Triangle、Trapezoid”的顺序依次输出;

  3. 各组内图形排序后的各图形类型及面积,格式同排序前各组图形的输出;

  4. 各组中面积之和的最大值输出,格式为The max area:面积值

设计的类图

 

 

 分析:

这两题几乎是一样的,唯一的不同之处就是第二题要分组排序,这样我们就可以吧第一题看做分组排序中的一种,就是最简单的一组分组排序,在第一题中,我们就定义了一个数组,多组的话就定义多个数组,先把同一组的图形归类到同一个分组里,再对那个组里的图形根据面积大小进行排序。解决了这点后,这两题基本就是一样的了。总体来说难度并不高,唯一让我觉得有问题的地方就是在sort分类时,我明明写的和老师课上演示的按面积排序的圆代码差不多,我却错了,直到现在我也没搞清楚,后来我直接换成了其他类中的排序方法,才终于写完了这一次题目集。

②题目集8和题目集9两道ATM机仿真题目的设计思路分析总结

7-3 ATM机类结构设计(一)

设计ATM仿真系统,具体要求参见作业说明。

输入格式:

每一行输入一次业务操作,可以输入多行,最终以字符#终止。具体每种业务操作输入格式如下:

  • 存款、取款功能输入数据格式: 卡号 密码 ATM机编号 金额(由一个或多个空格分隔), 其中,当金额大于0时,代表取款,否则代表存款。

  • 查询余额功能输入数据格式: 卡号

输出格式:

①输入错误处理

  • 如果输入卡号不存在,则输出Sorry,this card does not exist.

  • 如果输入ATM机编号不存在,则输出Sorry,the ATM's id is wrong.

  • 如果输入银行卡密码错误,则输出Sorry,your password is wrong.

  • 如果输入取款金额大于账户余额,则输出Sorry,your account balance is insufficient.

  • 如果检测为跨行存取款,则输出Sorry,cross-bank withdrawal is not supported.

②取款业务输出

输出共两行,格式分别为:

[用户姓名]在[银行名称]的[ATM编号]上取款¥[金额]

当前余额为¥[金额]

其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。

③存款业务输出

输出共两行,格式分别为:

[用户姓名]在[银行名称]的[ATM编号]上存款¥[金额]

当前余额为¥[金额]

其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。

④查询余额业务输出

¥[金额]

金额保留两位小数。

设计的类图

 

 

7-1 ATM机类结构设计(二)

设计ATM仿真系统,具体要求参见作业说明。

输入格式:

每一行输入一次业务操作,可以输入多行,最终以字符#终止。具体每种业务操作输入格式如下:

  • 取款功能输入数据格式: 卡号 密码 ATM机编号 金额(由一个或多个空格分隔)

  • 查询余额功能输入数据格式: 卡号

输出格式:

①输入错误处理

  • 如果输入卡号不存在,则输出Sorry,this card does not exist.

  • 如果输入ATM机编号不存在,则输出Sorry,the ATM's id is wrong.

  • 如果输入银行卡密码错误,则输出Sorry,your password is wrong.

  • 如果输入取款金额大于账户余额,则输出Sorry,your account balance is insufficient.

②取款业务输出

输出共两行,格式分别为:

业务:取款 [用户姓名]在[银行名称]的[ATM编号]上取款¥[金额]

当前余额为¥[金额]

其中,[]说明括起来的部分为输出属性或变量,金额均保留两位小数。

③查询余额业务输出

业务:查询余额 ¥[金额]

金额保留两位小数。

设计的类图

 

 

 

 

分析:

第一题考查对多个类之间的联系,比如继承,聚合,组合,依赖等,我之前对这几种类之间的关系理解的不是很到位。直到写这题,我才正视这个问题。我通过自己写一些测试代码和查阅网上的聚合,组合的实例代码,慢慢搞清楚了依赖其实就是在一个类的方法中引用另一个类,甚至不用在自己的属性里加上这么一个类,它们的关联仅仅就是这个方法;聚合其实就是在一个类中要把一个其他类作为他的属性,并且这个类可以说是它的一部分,但没有说没有谁另一个就会不存在;而组合可以说在一个类在另一个中是不可或缺的,它们彼此互相依赖,会互相影响,比如人和心脏;搞清楚这些之后,我写这道题目就十分迅速了,基本没有卡住的地方。第二题是对上一次题目的修改,让它的功能更加丰富,比如可以借贷,可以跨行取钱了,我一开始想的十分简单,后面才发现,这题目里的坑还真不少。总体来说,难度不高,但是十分繁琐,这让我意识到第一题我的代码还是存在不少问题的,比如明明就是加一个功能和修改一个功能,我却修改了太多代码。

改进建议:

这几次题目集让我认识到了我存在的许多问题,比如代码的可重复性不高,有时耦合性又太高,导致修改起来时又十分复杂,我也学到了许多的新知识,知道了类之间的关联到底是咋样的,java的学习差不多告一段落了,接下来要的就是不断更新对其中的概念的理解,争取做到会写代码也可以清晰的理清代码深层的联系,并不断改进和完善代码中各个类之间的关系。

总结:

通过最后一个阶段的联系,我更加加深了对依赖,聚合,组合的理解,并能用代码实现这些关联,运用了更多之前没用过的类和许多方法,对数组的使用上也更加熟练了。

这个学期的java课程已经结束了,这门课程也没有想象中的困难,在以后的学习中,也要多写java代码,争取把这门语言真正掌握,并且希望我以后运用java的时候可以得心应手。我认为老师教的方式挺好,可以边学边写。

标签:总结,输出,题目,卡片,格式,java,图形,输入
来源: https://www.cnblogs.com/rdcj123/p/15706065.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有