在学习过C语言之后,虽然有了编程的一些思想,但在刚刚接触Java编程语言的时还是遇到了许多困难。《软件构造》课程开课以来,其中的实验代码采用的是Java,因此学习好这门课程就是学习好Java编程语言。在做完第一次实验后,进行一次总结。在第一次试验中,分为三个部分(其中第四个选做)。
(1)第一问为幻方(Magic Square)问题,幻方,即n*n矩阵,将数字1至n*n个数字分别按照一定规律填入矩阵中。编写函数判断文件中的矩阵是否为幻方。遇到的第一个困难就是如何读取文件信息。在学习Java读取文件方法后,首先读取文件路径,分别以“/n”“/t”为分隔符将文件中文本分隔开,将得到的数字每行,每列以及两条对角线之和进行对比,判断是否为幻方。
在这个问题中,首先学到了Java语言中读取文件的方法,另外,还学到了几个Java给出的方法,例如,给出错误提示,.split()(以括号中字符为标志将字符串分隔开),.length()(返回字符串长度)等方法以及其运用。
(2)第二问中主要介绍了Java中turtle画图工具的功能以及使用方法。其中,turtle工具给出了以下几种方法:
1)forward(d):向前移动d个单位,2)turn(degree):转动角度为degree,3)goto(x,y):将当前位置移动到坐标为(x,y)的位置等等。例如,若要绘制一个正方形,则有如下代码:
public static void drawSquare(Turtle turtle, int sideLength) {
turtle.draw();
turtle.forward(sideLength);
turtle.turn(90.00);
turtle.forward(sideLength);
turtle.turn(90.00);
turtle.forward(sideLength);
turtle.turn(90.00);
turtle.forward(sideLength);
turtle.turn(90.00);//每次向前移动正方形边长并旋转90°
}
再如:若要绘制一个五角星,则与正方形绘制方法类似,有如下代码:
public static void drawPersonalArt(Turtle turtle) {
int i = 1;
turtle.draw();
for(i=1;i<=5;i++) {
turtle.forward(40);
turtle.turn(144.0);
}
}
(3)第三个问题主要涉及到了数据结构的相关知识,设计一个无向图,顶点代表不同的人,而其中的边则代表两个人之间是否存在朋友关系,如两人之间存在朋友关系,则两个顶点之间有边,若没有则没有边。实现添加顶点及边,计算任意两点间的距离等功能。在创建无向图时,将顶点作为集合存储在Vertex[]中,分别在add_vertex和add_edge函数中添加顶点和边。在计算两点间距离前首先应遍历所有顶点,这时要用到数据结构所学知识。
总结:
在这次实验后,首先对Java有了初步的认识和理解,接触到了许多编程方法思想,作为面向对象编程语言,与之前学习过的C语言有很明显的不同,第一次实验后渐渐熟悉了Java编程思想。同时,在实验一中仍然存在许多问题没有解决,因此在以后的实验和学习中,需要不断积累自己的编程经验,认真对待每一次的实验。