软件构造Lab1小记

本次软件构造实验1顺利完成,再次对于其中我有所收获,感觉有价值的点做一点记录,希望可以对看到这篇博客的人有帮助。

  1. 目录

    实验目标简述:

    工具运用:

    代码部分的收获:

    总结:


实验目标简述:

本次的实验,是我们第一次接触java相关工具编写程序,我利用eclipse这个IDE编写,同时综合运用junit等开发工具对代码进行单元测试,做到了能够为所开发的代码编写基本的测试程序并完成测试,初步保证所开发代码的正确性。在提交阶段,我们还第一次使用github网站,尝试利用git从本地push资料到github。框架如下:

  • 基本的Java OO编程

  • 基于Eclipse IDE进行Java编程

  • 基于JUnit的测试

  • 基于Git的代码配置管理

主要是这次所有的工具,包括提交方式都是全新的(包括这篇博客),总的来说,收获很多。

工具运用:

首先是eclipse这个IDE的安装,配置编译环境。这部分从网上的相关教程已经说的相当详尽充分,此处不再累述。

关于在eclipse中添加junit测试代码模块总结如下:

  1. 新建一个Source Folder,作为测试模块的文件夹(切记一定是Source Folder,普通的文件夹会导致no junit tests found这样的报错)
  2. 选中建好的文件夹,在other中选择JUnit Test Case,单击Next就完成了建立。

关于运用Git上传文件到GitHub网站总结:

  1. 首先是网站稳定性问题,可能需要一点“操作”才能稳定进入GitHub网站。
  2. 上传命令的顺序如下
  • 首先进入上传的本地文件夹
  • 建立远程仓库和本地的链接,可以在下载时用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等更加熟练。

对于面向对象理解更加深刻。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值