在接触这课之前,包括我在内的很多学生基本都没学过或没用过java,因此LAB1是一个很好的过渡。通过LAB1,对于JAVA的语法、编程思想等,有了一些较为基础的认识。
P1 Magic Square
P1.1 isLegalMagicSquare
对一个给定的矩阵/非矩阵,通过判定各种条件来确定其是否为幻方
解决步骤:
1.由于矩阵存放在txt文件中,首先要读入txt文件,根据相对路径读入1-5.txt
2.读入txt文件中的内容到一个二维数组content[][]中
3.对数组进行判断 分别有非矩阵/行列数不相等/存在小数或负数/空格符不是/t等 排出掉不符合幻方定义的txt
4.求出第一行sum 然后再求出其余各行各列各对角线的sum 进行比较 如果相同则为幻方 不同则非幻方
注意事项:
1.通过BufferedReader读入文件,用split将字符串分割
2.针对5个文本文件出现的所有情况进行错误判断与处理
P1.2 generateMagicSquare
将generate函数加入到程序中,使其能够符合程序要求正确生成幻方
解决步骤:
原题只让绘制流程图与添加中文注释,生成新的6.txt并判断6.txt是否符合幻方,此处略
P2 Turtle Graphics
完善turtlesoup.java中的方法并在turtlesouptest.java中测试
P2.1 Problem 1:Clone and import
从GitHub获取该任务的代码、在本地创建git仓库、使用git管理本地开发。
git常用指令:
①cd 目录
②dir查看目录内信息
③git add *
④git commit -m "注释"
⑤git remote add origin(地址)
⑥git push -u origin master
P2.2 Problem 3: Turtle graphics and drawSquare
循环四次 每次forward(sideLength) turn(90)
P2.3 Problem 5: Drawing polygons
先计算出正多边形每个角的角度 然后和刚才一样for循环 forward sideLength turn(外角度数)
P2.4 Problem 6: Calculating Bearings
通过一系列条件判断可得出方位角
P2.5 Problem 7: Convex Hulls
利用边界法求解凸包 在点数小于等于3时直接返回 点数大于3时:
①求出最左下角的点
②以该点为中心 寻找当前离该点方位角最小的点 如果有多点共线,则选取距离最近的点
③找到之后以找到的点替换当前点
④循环②③直到下一次找到的点为最开始找到的最左下角点
P2.6 Problem 8: Personal art
略
P2.7 Junit测试
写Junit测试文件对结果进行测试即可通过
P3 Social Network
编写完成Person和FriendshipGraph两个类,以无向图的形式模拟社交网络,但设计要能拓展到有向图。用图代表社交网络,顶点代表社交网络中的每个人,边代表人之间的关系
以Person类作为存储结构,存放顶点(人)及人的相关属性
在FriendshipGraph类中分别编写addVertex、addEdge方法,添加顶点与边
以BFS算法为核心编写getDistance方法 求出两点间最短路径
设计main类,添加人与人之间的关系,形成应用程序
最后编写测试类,测试程序结果是否正确