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. Qt中的标准对话框之QMessageBox

    1. Qt标准对话框 Qt为开发者提供了一些可复用的对话框类型 Qt提供的可复用对话框全部继承自QDialog类 Qt中的对话框的使用方式和QDialog完全一致 2. 标准对话框的使用步骤 ①定义对 ...

  2. Java NIO通信的基础,基于TCP C/S例子介绍

    为了更好的理解Netty异步事件驱动网络通信框架,有必要先了解一点Java NIO原生的通信理论,下面将结合基于TCP的例子程序,含客户端和服务端的源码,实现了Echo流程. Java NIO的核心概 ...

  3. ecstore-自定义app里增加对应的wap的模板

    注意第二个参数空第三个参数是自定义app名称$this->page('wap/member/recmembers.html','','ecstoreapprcomp2p');

  4. Vivado约束文件(XDC)的探究(2)

    Vivado约束文件(XDC)的探究(2)

  5. windows下怎么生成github的ssh公钥

    windows下如何生成github的ssh公钥: 1.首先你要安装Git工具 2.在C:\Documents and Settings\Administrator\目录下,运行Git Bash he ...

  6. 导入数据库时出现ORA-01435: 用户不存在

    报错信息: IMP-00003: 遇到 ORACLE 错误 1435 ORA-01435: 用户不存在 成功终止导入,但出现警告. 我的导入脚本为: imp system/*****@min file ...

  7. july 大神 要向他学习的东西(已学了)

    交换礼物代码 库 permutations 库 product https://www.cnblogs.com/kaibindirver/p/10714375.html https://www.cnb ...

  8. hadoop 伪分布式安装

    0. 关闭防火墙 重启后失效 service iptables start ;#立即开启防火墙,但是重启后失效. service iptables stop ;#立即关闭防火墙,但是重启后失效. 重启 ...

  9. 服务容错保护断路器Hystrix之六:服务熔断和服务降级

    伴随着微服务架构被宣传得如火如荼,一些概念也被推到了我们面前(管你接受不接受),其实大多数概念以前就有,但很少被提的这么频繁(现在好像不提及都不好意思交流了).想起有人总结的一句话,微服务架构的特点就 ...

  10. spring4.0之九:websocket简单应用

    Spring 4.0的一个最大更新是增加了websocket的支持.websocket提供了一个在web应用中的高效.双向的通讯,需要考虑到客户端(浏览器)和服务器之间的高频和低延时消息交换.一般的应 ...