• 结对编程实验(1李晓冬13、张金伟118)


    结队成员

    张金伟201521123118

    李晓冬201521123113


    ###本次结对作业是对上一届的程序进行分析,阅读了和运行了作业链接中的一些程序,选择了其中一个非图形界面的四则运算程序。 ###旧程序分析 原程序只能运行两个数字的四则运算,且只能单个符号。我们在这里对此进行了小部分的重构,可以多个数字进行运算,但是仍然还是只是单个运算符号。

    分工

    • 我和李晓冬共同完成此次代码的修改

    程序思维导图

    码云上传:

    原代码修改:

    public void add(String s)//加法
    	    {
    	        String[] str=s.split("[+]");
    	        if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)//分数
    	        {
    	        	String[] str1=str[0].split("[/]");
    	        	String[] str2=str[1].split("[/]");
    	        	if(Integer.parseInt(str1[1]) != 0 && Integer.parseInt(str2[1]) != 0)//分母不为零
    	        	{
    	        		result =simplefraction(((Integer.parseInt(str1[0])*Integer.parseInt(str1[1]))+(Integer.parseInt(str2[0])*Integer.parseInt(str1[1]))),(Integer.parseInt(str1[1])*Integer.parseInt(str2[1])));      	
    	        	}else{
    	        		throw new IllegalArgumentException("Divisor cannot be zero!");//除数为零时抛出异常
    	        	}
    	        }
    	        else{//整数      	
    	        	result="0";//输入的第一个数字为result
    	        	for(int i=0;i<str.length;i++)
    	 	    	   result =Integer.parseInt(result)+ Integer.parseInt(str[i])+"";   //从第二个开始累加
    	        }
    	    }
    	    
    	    public void substract(String s)//减法
    	    {
    	    	 String[] str=s.split("[-]");
    	        if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)//分数
    	        {
    	        	String[] str1=str[0].split("[/]");
    	        	String[] str2=str[1].split("[/]");
    	        	if(Integer.parseInt(str1[1]) != 0 && Integer.parseInt(str2[1]) != 0)//分母不为零
    	        	{
    	        		result =simplefraction(((Integer.parseInt(str1[0])*Integer.parseInt(str2[1]))-(Integer.parseInt(str2[0])*Integer.parseInt(str1[1]))),(Integer.parseInt(str1[1])*Integer.parseInt(str2[1])));    	
    	        	}else{
    	        		throw new IllegalArgumentException("Divisor cannot be zero!");//除数为零时抛出异常
    	        	}
    	        }
    	        else{//整数
    	        	if (s.charAt(0)=='-'){//判断输入的第一个是否为负数
    	        	result = "-"+str[1];
    	        	for(int i=2;i<str.length;i++){
    	 	    	   result = Integer.parseInt(result)-Integer.parseInt(str[i])+"";
    	 	    	  }
    	        	}
    	        	else {result = Integer.parseInt(str[0])+"";
    	        	for(int i=1;i<str.length;i++){
    	    	   result = Integer.parseInt(result)-Integer.parseInt(str[i])+"";}
    	        	}
    	       }
    	    }
    	    
    	    
    	    public void multiply(String s)//乘法
    	    {
    	        String[] str=s.split("[*]");
    	        if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)//分数
    	        {
    	        	String[] str1=str[0].split("[/]");
    	        	String[] str2=str[1].split("[/]");
    	        	if(Integer.parseInt(str1[1]) != 0 && Integer.parseInt(str2[1]) != 0)//
    	        	{
    	            	result =simplefraction(Integer.parseInt(str1[0])*Integer.parseInt(str2[0]),Integer.parseInt(str1[1])*Integer.parseInt(str2[1]));    	
    	        	}else{
    	        		throw new IllegalArgumentException("Divisor cannot be zero!");//除数为零时抛出异常
    	        	}
    	   
    	        }
    	        else{//整数
    	        	result=str[0];//多个数相乘
    	        	for(int i=1;i<str.length;i++)
    	 	    	   result =Integer.parseInt(result)* Integer.parseInt(str[i])+"";
    		 	      }      	
    	    }
    	    
    	    
    	    public void divide(String s)//除法
    	    {
    	        String[] str=s.split("[/]");
    	        
    	        if(str[0].indexOf("/")>-1 || str[1].indexOf("/")>-1)//分数
    	        {
    	        	String[] str1=str[0].split("[/]");
    	        	String[] str2=str[1].split("[/]");
    	        	if(Integer.parseInt(str1[1]) != 0 && Integer.parseInt(str2[1]) != 0)//分母不为零
    	        	{
    	            	result =simplefraction(Integer.parseInt(str1[0])*Integer.parseInt(str2[1]),Integer.parseInt(str1[1])*Integer.parseInt(str2[0]));  	
    	        	}else{
    	        		throw new IllegalArgumentException("Divisor cannot be zero!");//除数为零时抛出异常
    	        	}
    	  
    	        }else{
    	        	if(Integer.parseInt(str[1]) != 0){//整数
    			 	       if( Integer.parseInt(str[0])<1000&&Integer.parseInt(str[1])<1000&&Integer.parseInt(str[0])>-1000&&Integer.parseInt(str[1])>-1000)
    			            {	            
    			 	    	   result = Integer.parseInt(str[0])/Integer.parseInt(str[1])+"";
    			            }       	
    			        
    			       else{ 
    			    	   throw new IllegalArgumentException("overrun!");}
    	                         		
    	        	}else {
    	        		
    	        		throw new IllegalArgumentException("Divisor cannot be zero!");   //除数为零时抛出异常  	
    	        	}
    	        }
    	    }
        
    

    代码覆盖率测试



    结对照片

    PSP表格

    小结感受

    这个实验相对来说不是很难,但是由于代码基础薄弱,前期分工有所不明确,意见有些不合,导致任务进度拖拉,后期慢慢磨合,最后形成了此次的代码的修改,体会到了结对编程的不容易,因为两个人的编程水平较差,未能体会到结对编程的好处,希望在以后的学习中能改善这种情况。

  • 相关阅读:
    jquery ajax loading效果
    php中count 多维数组长度统计实现方法
    jquery 中Map、each的应用
    转:php获取网页内容方法总结
    经典JavaScript正则表达式实战
    JQuery this 和 $(this) 的区别
    Windows Server 2003 的 Boot.ini 文件的/3GB开关选项
    用ghost装双系统(装03,xp系统)
    Possible memory leak with ReportViewer.RefreshReport() ReportViewer内存回收缺陷
    添加IIS出错,提示缺少CONVLOG.exe文件
  • 原文地址:https://www.cnblogs.com/zjwl/p/8646459.html
Copyright © 2020-2023  润新知