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

需求分析

对输入的算式进行计算,要求满足一下条件:

  1. 支持整数运算,如2+5,47+7865.
  2. 支持多运算符运算,如6/9+4/9,4+7*9.
  3. 支持分数运算(真分数),如3/4.
  4. 正确率高
  5. 有输入提示信息
  6. 能够处理非法输入(返回异常)

扩展需求:

  1. 支持自动生成题目
  2. 支持多语言

设计思路

  1. 编写主类Arithmetic4
  2. 编写ArithmeticFunc类来实现计算,其中包括:加、减、乘、除、次方、开方的方法,也包含抛出异常的方法。

核心代码及注释

  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);
    }

测试方法

代码托管

对结对小伙伴的评价

  • 结对伙伴:20165233 张雨昕
  • 我与我的伙伴在一起讨论了很久对于代码的的设计,在学习了老师对于堆栈的代码之后得到了一些灵感,所以写出了最先的框架,对不同运算符做筛选,然后针对不同运算符做出运算,这样就完成了这个代码。

PSP表格

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

感想

对于本次结对编写代码,我感受到了1+1>2的感觉,在编写代码的过程中两个人的合作可以及时改写不正确的代码,并且能够得到新的灵感和想法,使我们的代码更加完善,更加严谨。同时也能够找出自己知识上的漏洞,进行补充,真的是妙啊。

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

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

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

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

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

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

    一.码云链接 项目名称FAO 码云链接 二.需求分析 实现一个命令行程序: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确 ...

  4. 20172306 2018-2019 《Java程序设计与数据结构》第一周学习总结

    20172306 2018-2019 <Java程序设计与数据结构(下)>第一周学习总结 教材学习内容总结 第一章 概述 (程序=数据结构+算法 软件=程序+软件工程) 1.1 软件质量 ...

  5. 20172306《Java程序设计与数据结构》第一周总结

    20172306<Java程序设计>第一周学习总结 教材学习内容总结 本周主要学习<Android和Java>书中的第二十三章和第二十六章. 第二十三章:Android简介 A ...

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

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

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

    20165205 2017-2018-2<Java程序设计>结对编程一 第二周总结 设计思路 编写主类Arithmetic4 编写ArithmeticFunc类来实现计算,其中包括:加.减 ...

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

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

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

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

随机推荐

  1. NLP自然语言处理中的hanlp分词实例

    本篇分享的依然是关于hanlp的分词使用,文章内容分享自 gladosAI 的博客,本篇文章中提出了一个问题,hanlp分词影响了实验判断结果.为何会如此,不妨一起学习一下 gladosAI 的这篇文 ...

  2. hanlp源码解析之中文分词算法详解

    词图 词图指的是句子中所有词可能构成的图.如果一个词A的下一个词可能是B的话,那么A和B之间具有一条路径E(A,B).一个词可能有多个后续,同时也可能有多个前驱,它们构成的图我称作词图. 需要稀疏2维 ...

  3. 时钟分频方法---verilog代码

    时钟分频方法---verilog代码 本文以SDI播出部分的工程为例,来说明一种时钟分频的写法.SD-SDI工程中播出时钟tx_usrclk为148.5MHz,但tx_video_a_y_in端的数据 ...

  4. golang里json的处理配合struct是相当方便

    type Feed struct { Name string `json:"site"` URI string `json:"link"` Type strin ...

  5. StyleCop(C#代码检测工具)

    StyleCop(C#代码检测工具)   一.StyleCop是微软的一个开源的静态代码分析工具,检查c#代码一致性和编码风格. 二.下载地址   http://stylecop.codeplex.c ...

  6. 使用 Visual Studio 分析器找出应用程序瓶颈

    VS的性能分析工具 性能分析工具的选择 打开一个“性能分析”的会话:Debug->Start Diagnotic Tools Without Debugging(或按Alt+F2),VS2013 ...

  7. Eclipse创建一个mybatis工程实现连接数据库查询

    Eclipse上创建第一mybatis工程实现数据库查询 步骤: 1.创建一个java工程 2.创建lib文件夹,加入mybatis核心包.依赖包.数据驱动包.并为jar包添加路径 3.创建resou ...

  8. 使用RetionalRose根据现有的java工程逆向生成类图

    1.进入RetionalRose选择J2EE模板 2.在菜单栏选择tools->java/j2EE->reverse engineer 3.编辑路径Edit CLASSPATH选择要生成类 ...

  9. docker镜像文件的导入与导出(docker镜像迁移)

    1.查看镜像ID # docker images [root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE myto ...

  10. [UE4]时间轴线TimeLine,Lerp插值

    一.TimeLine时间轴线 勾选“User Last Keyframe”表示使用时间轴最后一个关键帧所在时间点作为结束时间,而不是使用设置的5秒作为结束时间点. 二.Lerp插值 Lerp插值一般与 ...