哈工大软件构造实验一

哈工大软件构造Lab1

显然,菜是事实,这里只谈一点感想。

P1 MagicSquier

P1就是完全在学习Java的文件操作了。最先就是在C语言中完全不存在(也有可能是我才疏学浅)的 try-catch ,可以收集并返回各种各样的错误类型,其中就包括P1需要的文件打开错误(本次用比较宽泛的Exception e)。可以用一个 try-catch 包含方法 isLegalMagicSquare 中所有的指令,非常方便快捷。

  1. 经过一次蛋疼且失败又磨叽的实现尝试,放弃了只打开一次文件的想法。新的想法打开x.txt文件共三次:第一次计算第一行元素个数,第二次统计行数、比较行数和列数、将字符串转化为 int 型,第三次计算比较行列和对角线。
  2. 在打开文件方面,用 FileReader + BufferedReader 的套路,虽然不懂深层次的原理,但是经过我和舍友们若干次尝试,貌似这种方法更靠谱。
  3. 读取元素采用了实验指导建议的 readLine() + split("\t")。一方面 split 是真滴强,另一方面,在对于不标准n*n矩阵时,严格的按 “\t” 分割,计算得到的函数列数一定不相等。
  4. 关于方法 generateMagicSquare ,大一上半年的C语言SSE写过,解释丑拒。

P2 Turtle

在很长一段时间内,直到写完了足够多的方法,第一次运行后,才发现这个和海龟好像没什么关系。。。。。。
P2主要是根据已经实现的 TurtleGUI 实现画出一系列轨迹,及其相关的一些功能。

  1. 首先 drawSquare 就是对turtle类中提供的方法测试一下(居然只有这两个方法)
  2. 方法 calculateRegularPolygonAnglecalculatePolygonSidesFromAngledrawRegularPolygon 用于计算正多边形内角,正多边形边数和画出正多边形。主要是对下面的方法提供一些支持。
  3. calculateBearingToPointcalculateBearings计算从一点到另一点需要向右转的角度。值得一提的是,在我分五种情况讨论,将tan转化为需要的角度,实现了 calculateBearingToPoint 后,才发现有tan2这种东西。。。MD
  4. 关于 convexHull ,就是用了想法简单,复杂度超高的gift- warpping算法。从最左下的点开始,找与y轴夹角最小的点,并且根据两点距离去除点在凸包边上的情况,最后找回第一个点时停止。这个方法中对于 set 和 list 的使用很多,是P2的学习重点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值