20165205 2017-2018-2《Java程序设计》结对编程一 第二周总结

设计思路

  1. 编写主类Arithmetic4
  2. 编写ArithmeticFunc类来实现计算,其中包括:加、减、乘、除、次方、开方的方法,也包含抛出异常的方法。
  3. ArithmeticFunc类中使用String[] str=s.split("")来查询算式中的计算符例如+,-,*将计算符两边的数字分别放在str[0]和str[1]当中。
  4. 在对计算符两边的数进行运算时分为了分式计算和整数计算。
  5. 在分式计算时以/为界限将str[0]的分子,分母分别放在str1[0]和str[1]中,将str[1]的分子分母放在str2[0]和str2[1],在计算次方时,在pow类中用Math.pow函数分别计算分子分母的数字,最后用输出分子/分母的方法将结果输出。在计算加法时,用通分的方法(str1[0]*str2[1]+str2[0]*str1[1])/(str1[1]*str2[1]),求出分数。
  6. 在计算整数时就用正常方法计算就可以。
  7. 在输出时用了一个函数simplefraction,来输出分数的形式。

核心代码及注释

  1. 计算内容, 以加法方法为例:

     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(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( 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!");}//数值范围超出时抛出异常
    } }
  2. 抛出异常运算符:以减法为例

         if(s.indexOf("-")>-1){
    int i=s.indexOf("-");
    if(s.indexOf("-",i+1)==i+1){
    throw new IllegalArgumentException("Input error! Don't like 1--1");//格式错误时抛出异常
    }else{
    substract(s);
    }
  3. 此程序存在以下缺陷

    • 没有考虑整数除以整数会得出真分数的情况。
    • 没有考虑整数与真分数进行运算的情况。
    • 没有考虑两个以上的数进行运算的情况。

测试方法

代码托管

结对感受

  • 结对伙伴:20165233 张雨昕
  • 在第二周的学习当中,我们小组完善了代码,经过多次的测试改正了对于边界数值运算的bug,我的小伙伴帮助我更加深刻地理解了测试文件的写法,十分感谢我的小伙伴。
  • 在学习如何计算分数时,我们俩查到了split()的用法,可以以"/"为分界,将分子与分母分离,还有在判断分数合理性的时候用到了indexOf()返回值大于-1时这个分式是合理的这个方法。

PSP表格

PSP Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 30 25
Estimate 估计这个任务需要多少时间 120 120
Development 开发 50 60
Analysis 需求分析(包括学习新技术) 50 30
Design Spec 生成设计文档 60 60
Design Review 设计复审(和同事审核设计文档) 30 20
Coding Standard 代码规范 (为目前的开发制定合适的规范) 20 40
Design 具体设计 60 60
Coding 具体编码 35 30
Code Review 代码复审 15 15
Reporting 报告 60 60
Test Report 测试报告 30 45
Size Measurement 计算工作量 20 25
Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 10 15
合计 620 630

20165205 2017-2018-2《Java程序设计》结对编程一 第二周总结的更多相关文章

  1. 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算

    20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...

  2. ### 20165219 2017-2018-2《Java程序设计》结对编程一 第二周总结

    20165219 2017-2018-2<Java程序设计>结对编程一 第二周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  3. 20165205 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165205 2017-2018-2<Java程序设计>结对编程一 第一周总结 需求分析 对输入的算式进行计算,要求满足一下条件: 支持整数运算,如2+5,47+7865. 支持多运算 ...

  4. 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165232 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  5. 20165219 2017-2018-2《Java程序设计》结对编程一 第一周总结

    20165219 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...

  6. 20172319 2018.04.11-16 《Java程序设计教程》 第6周学习总结

    20172319 2018.04.11-16 <Java程序设计教程>第6周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题 ...

  7. 20172319 2018.04.11 《Java程序设计教程》第7周课堂测验(补写博客)

    20172319 2018.04.11 <Java程序设计教程>第7周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

  8. 20172319 2018.10.19《Java程序设计教程》第7周课堂实践(补写博客)

    20172319 2018.10.19 <Java程序设计教程>第7周课堂实践 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

  9. 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)

    20172319 2018.10.12 <Java程序设计教程>第6周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

随机推荐

  1. Myeclipse 配置Git详解

    Myeclipse+Git EGit安装 MyEclipse已经集成了Git插件EGit,在window->Preference里搜索git可以看到.   如果没有,安装方式为Help-> ...

  2. C#:单元测试(VS2015)

    根据VS2015的提示,仅支持在共有类或共有方法中支持创建单元测试.所以,如果我们要测试私有或是保护的类和方法,是要先将他们暂时设定成公有类型. 在VS2015中创建单元测试,只要在我们想测试的地方点 ...

  3. 解决cron无法运行报错:FAILED to authorize user with PAM (Module is unknown)

    查看cron运行日志 tail -f /var/log/cron 报如下错误: May 8 10:14:01 localhost crond[9399]: (root) FAILED to autho ...

  4. C# .NET 2.0 判断当前程序进程是否为64位运行时 (x64)

    public static bool Is64BitProcess() { ; }

  5. 黄聪:JQUERY的datatables插件,Date range filter时间段筛选功能

    需配合moment插件实现:http://momentjs.com/ 演示:http://live.datatables.net/zuciyawi/1/edit HTML代码 <!DOCTYPE ...

  6. Django-models-迁移错误

    错误表现:数据表二次迁移时:django.db.utils.InternalError: (1138, 'Invalid use of NULL value') 错误原因:是因为二次修改了null值属 ...

  7. MSSQL 2008 密钥

    sql server2008 r2 密钥 Developer: PTTFM-X467G-P7RH2-3Q6CG-4DMYBEnterprise: JD8Y6-HQG69-P9H84-XDTPG-34M ...

  8. spring AOP的学习

    1.Spring常用的概念 Joinpoint(连接点): 所谓连接点是指那些被拦截到的点.在spring中,这些点指的是方法,因为spring只支持方法类型的连接点. Pointcut(切入点): ...

  9. 引用 自动化测试基础篇--Selenium Python环境搭建

    原文链接:https://www.cnblogs.com/sanzangTst/p/7452922.html 鸣谢参藏法师. 学习selenium python需要的工具: 1.浏览器 2.Pytho ...

  10. Java使用 SFTP实现文件上传下载

    package com.lijy.util; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import co ...