3.1 Magic Squares
该单元有两个任务:
(1)isLegalMagicSquare()函数:判断一个已知矩阵是否为幻方。该过程有两个重要步骤:从文本中读取矩阵、利用for循环和if语句实现幻方判断
(2)generateMagicSquare()函数:生成一个幻方,并利用isLegalMagicSquare()函数进行判断。该任务中也涉及了文件的读写和保存两个重要步骤。
3.1.1 isLegalMagicSquare()
(1)文件读入
利用FileReader读取文件,从文件中用readline逐行读入,然后进行分隔符判断。以该字符串数组长度作矩阵维度,新建word数组。
(2)判断是否为幻方
①行列不相等:
②非正整数情况:
③不是矩阵情况:
④对矩阵进行求和:
求和后有两种情况:
输出结果:
3.1.2 generateMagicSquare()
(1)生成幻方
·row、col变量分别控制矩阵的航与列
·每n个数中row和col均按照0n-10的顺序排列
·不重复保证:当为n的倍数时,保持col不变,row重新变换
(2)写入文件并判断是否为幻方
利用FileWriter将生成的矩阵写入6.txt文件中
(3)分析异常
·当n为负数时,提示输入为负数。原因:数组大小不能为负数
·当n为偶数时,n在递增之后会超过数组大小,导致数组下标会出现越界 访问。
输出结果:
3.2 Turtle Graphics
该任务中已经搭建好了框架,我们需要利用给出的类和方法实现以下分五个部分的内容:
(1)Turtle graphics and drawSquare:画一个正方形
(2)Drawing polygons:完成calculateRegularPOlygonAngle函数和calculatePolygonSidesFromAngle函数,画出等边多边形
(3)Calculating Bearings:完成calculateBearingToPoint函数和calculateBearings函数
(4)Convex Hulls:求凸包问题:实现输出给定的n个点的凸包
(5)Personal art:完成drawPersonalArt函数,利用turtle设计一个图案
这部分相对较简单,不多赘述,附上3.6 DIY的结果图: