Lab 1 心得体会

Lab 1 心得体会

isLegalMagicSquare()
首先利用scanner类扫描文本文件,后用scanner.nextLine()方法以字符串格式逐行读取到lines动态数组中,line.size即为方阵的阶数,而后再用s.split方法划分方阵每一行的各个字符串,并储存在一个字符串数组中。
比较每行所产生的字符串数组的长度是否都等于方阵的阶数,即可判断此矩阵是否为真方阵。
而后利用Integer.parseInt()方法将每一行字符串格式的数字转化为整型数并保存在一个二维数组中,如果为其他类型的变量则用trycatch语句将异常转化为输出“非整型数!”并返回false、同理可利用if语句判断是否为正整数。
下面检验是否为幻方,将二维数组的第一行取出求和作为标准,然后利用两个for循环检验每一行和每一列的和是否都与标准值相等,最后检验左斜对角线与右斜对角线上的和是否相等,如有一处不等,则返回false;否则返回true。

generateMagicSquare()

注释见代码;
这是说明数组的大小不能为负数
说明数组越界
假设n=2,第一个赋值的位置为(0,1),赋为i=1,由于在第0行,下次赋值在第n-1(=1)行由于在第n-1(=1)列,下次赋值在第0列第二个赋值的元素位置为(1,0),赋值为i(=2)由于i=2是n=2的倍数,下一次就会赋值在下一行(2,0),产生越界
Turtle Graphics
在turtlesoup.java中根据注释的提示补全相应函数从而实现绘图工具Turtle。
1、从Github上获取任务的源代码,在本地创建git仓库
2、画出边长为40的正方形。
3、计算正多边形内角和外角
4、计算向量(x1,y1)与(x2,y2)的夹角
5、凸包算法
6、自由创作
Problem 1: Clone and import
从github上下载代码: download。下载Git bash,从本地创建git仓库:
1、git init初始化
2、git add remote添加远程库源
3、在远程仓库创建master分支
4、git pull origin master将远程仓库同步到本地
5、git add .->git commit -m ‘文件名’->git push将本地文件加入到本地仓库,将本地仓库同步到远程仓库。

Problem 3: Turtle graphics and drawSquare
1、利用forward、turn函数实现给定参数的前进和转向
2、通过循环四次,每次前进相应的距离后右转90°就可以画出正方形。
Problem 5: Drawing polygons

正多边形的内角度数等于180度– 360.0 度/ 边数。
已知正多边形的内角度数,求边数(注意强转)。
Problem 6: Calculating Bearings

计算当前向量坐标与当前点与目标点构成的向量之间的夹角。利用atan2函数计算向量方向与x轴正向的夹角。之后计算与y轴正向的夹角,判断如果为负要再加上360°。
对图列表中的每两个相邻的点调用calculateBearingToPoint方法计算其夹角,结果保存在列表中并返回。
Problem 7: Convex Hulls

该函数的功能是求出列表中所有点的凸包。选择最左下角的点作为起点,然后多次调用calculatingBearings方法选择转向角度(与y轴正向夹角最大)最小同时距离最长的点加入凸包集合,并作为下一个起始点。已经加入凸包集合的点使用flag做标记。
当下一个起始点为最开始的点(最左下角)时,方法返回凸包集合。
Problem 8: Personal art
画出一个“HIT”!
Submitting
git add .->git commit -m “src”->git push提交到Lab1仓库。
Social Network
利用数据结构:图,实现一张人际关系网。
设计/实现FriendshipGraph类

首先riendshipGraph.java中声明两个类
第一个用来记录人的相关信息(姓名、人际关系)
第二个用来检测是否有重复的姓名。

此方法用来判断一个人是否为已存在的,如果已存在的话直接退出,未存在则加入person动态数组。

此方法为通过人际关系添加边。

getDistance方法功能是计算两个Person之间的距离(最短路),利用数据结构队列和Map集合实现广度优先搜索求最短路。
设计/实现Person类

定义了两个private类型的变量(姓名和关系表)
定义了两个方法调用查看Person类的姓名和关系表,以及两个方法用来位此人命名和添加新朋友。
设计/实现客户端代码main()
由实验手册:

设计/实现测试用例

分别测试添加点、添加边、以及获取最短路的功能。

实验进度记录

请使用表格方式记录你的进度情况,以超过半小时的连续编程时间为一行。
每次结束编程时,请向该表格中增加一行。不要事后胡乱填写。
不要嫌烦,该表格可帮助你汇总你在每个任务上付出的时间和精力,发现自己不擅长的任务,后续有意识的弥补。
日期 时间段 任务 实际完成情况
2021-05-21 22:30-23:30 编写问题1的MagicSquare.java函数并进行测试 按计划完成
2021-05-22 00:00-9:00 编写问题2的turtlesoup.java并进行测试 按计划完成
2021-05-22 18:00-20:00 编写问题3的FriendshipGraph.java和Person.java并写test进行测试 按计划完成
实验过程中遇到的困难与解决途径
遇到的困难 解决途径
Git hash不会用 查找网络上的相关教程。
凸包算法写不出来 翻阅算法设计与分析相关书籍,先写C,再转化为Java。
测试函数总不成功 每一个要测试的类之前都要加@Test。
实验过程中收获的经验、教训、感想
实验过程中收获的经验和教训
掌握了基本 Java 编程思想与技能,能够利用 Java OOP开发基本的功能模块,能够阅读理解已有代码框架并根据功能需求补全代码,能够为所开发的代码编写基本的测试程序并完成测试,初步保证所开发代码的正确性。
学会了利用 Git 作为代码配置管理的工具,学会 Git 的基本使用方法。
对Java更深层次的理解仍有欠缺。
针对以下方面的感受
(1) Java编程语言是否对你的口味?对
(2) 关于Eclipse IDE;挺好用
(3) 关于Git和GitHub;用过第一次就好了
(4) 关于CMU和MIT的作业;英语翻译有点难,理解不好题目的意思
(5) 关于本实验的工作量、难度、deadline;挺难的
(6) 关于初接触“软件构造”课程;挺好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值