本次软件构造实验1顺利完成,再次对于其中我有所收获,感觉有价值的点做一点记录,希望可以对看到这篇博客的人有帮助。
实验目标简述:
本次的实验,是我们第一次接触java相关工具编写程序,我利用eclipse这个IDE编写,同时综合运用junit等开发工具对代码进行单元测试,做到了能够为所开发的代码编写基本的测试程序并完成测试,初步保证所开发代码的正确性。在提交阶段,我们还第一次使用github网站,尝试利用git从本地push资料到github。框架如下:
-
基本的Java OO编程
-
基于Eclipse IDE进行Java编程
-
基于JUnit的测试
-
基于Git的代码配置管理
主要是这次所有的工具,包括提交方式都是全新的(包括这篇博客),总的来说,收获很多。
工具运用:
首先是eclipse这个IDE的安装,配置编译环境。这部分从网上的相关教程已经说的相当详尽充分,此处不再累述。
关于在eclipse中添加junit测试代码模块总结如下:
- 新建一个Source Folder,作为测试模块的文件夹(切记一定是Source Folder,普通的文件夹会导致no junit tests found这样的报错)
- 选中建好的文件夹,在other中选择JUnit Test Case,单击Next就完成了建立。
关于运用Git上传文件到GitHub网站总结:
- 首先是网站稳定性问题,可能需要一点“操作”才能稳定进入GitHub网站。
- 上传命令的顺序如下
- 首先进入上传的本地文件夹
- 建立远程仓库和本地的链接,可以在下载时用clone的方法确定联系,也可以使用以下命令:
git remote add origin /path/to/origin.git
- 再使用git add .这个命令,加入本地仓库
- 再使用commit命令
git commit -m 'first commit'
- 最后push到远程仓库的master分支,完成提交:
git push origin master
代码部分的收获:
这部分我印象最深刻的是突包部分,由于我自身写代码的不仔细,再对list进行操作,get其中的某一个位置的值时,越界了,然后一直报错,使得我调试了很久:
首先是确定起点位置部分的代码:
//找最左下方,设为first
Point first=temp.get(0);
Point s=temp.get(1);
for (int i=1;i<temp.size();i++)
{
s=temp.get(i);
if (s.y()<first.y())
{
first=s;
}
if (s.y()==first.y()&&s.x()<first.x())
{
first=s;
}
}
bag.add(first);//加入bag
在成功确定起始位置之后,我们需要做的就是反复取偏移值最小的位置
注意:在偏移值相同时,要取距离最远的:
//do:每一次得到新target for:每次测量一个点是否符合target
do {
int flag=0;
//初始化板块,chosen从开头取,要求不是target.
int z=0;
chosen=temp.get(z);
while(chosen==target)
{
z++;
chosen=temp.get(z);
}
for (i=0;i<temp.size();i++)
{
//初始化,s从开头取,要求不是chosen和target
s=temp.get(i);
while(s==target||s==chosen)
{
i++;
if (i>=temp.size())
{
flag=1;
break;
}
s=temp.get(i);
}
if (flag==1)
{
break;
}
if (calculateBearingToPoint(start,(int)target.x(),(int)target.y(),(int)chosen.x(),(int)chosen.y())>=calculateBearingToPoint(start, (int)target.x(),(int)target.y(),(int)s.x(),(int)s.y()))
{
if (calculateBearingToPoint(start,(int)target.x(),(int)target.y(),(int)chosen.x(),(int)chosen.y())==calculateBearingToPoint(start, (int)target.x(),(int)target.y(),(int)s.x(),(int)s.y()))
{
double d1,d2;
d1=(s.x()-target.x())*(s.x()-target.x())+(s.y()-target.y())*(s.y()-target.y());
d2=(chosen.x()-target.x())*(chosen.x()-target.x())+(chosen.y()-target.y())*(chosen.y()-target.y());
if (d1>d2)
{
chosen=s;
}
}
else
{
chosen=s;
}
}
}//for 完结
下面还有一个想要分享的部分是Java的文件流读入方法,这个东西需要多接触,以后比较常用:
在处理读入文本问价,以及写入文本文件的问题,以后都可以用这个作为模板来做
File file = new File(fileName);
BufferedReader reader = null;
int row = 0;
reader=new BufferedReader(new FileReader(file));
String tempString=null;
tempString=reader.readLine();//读文件的第一行
String[] a=tempString.split("\t");
int N=a.length;//确定第一行有多少数字,生成二维数组存储矩阵
int[][] sq=new int[N][N];
for (int i=0;i<N;i++)
{
if (isNumer(a[i]))
{//对每个读取到的string,判断它是不是一个整数
sq[row][i] = Integer.valueOf(a[i]);
}
else
{
System.out.println("输入非正整数");
return false;
}
}
总结:
本次实验总的来说,由于我们第一次接触Java,接触这么多新的开发工具,交流工具,导致大家都觉得非常困难,但是我认为只要敢于坚持下去,一步步去摸索这些东西的使用方式,最终我们大家都会有所收获,我也会不断坚持记录我再计算机方面的成长与进步。
对于这次实验,我学到了Java的相关知识,促进我更快入门。
对于一些其他软件的使用,比如说git等更加熟练。
对于面向对象理解更加深刻。