见结对编程项目-四则运算(第一周)html
add
,substract
,multiply
,divide
四个方法中,首先要进行是整数仍是真分数的判断。对于真分数,首先利用split()
方法,将用户输入的计算符号去掉,即经过+
、-
、*
、÷
将输入的式子,把数字分隔出来。再利用indexOf()
来判断是不是个分数。随后,利用公式来进行分数的四则运算。以加法为例:加法是通分来进行计算的。好比1/2+1/3
,分子是1*3+1*2
,分母是2*3
,如下是代码实现: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])));
5
和6
。上面程序中的simplefraction()
就是给计算出的两个数进行约分与添加/
的方法。约分的思想是先求出两个数的最大公因子,如果1,就直接添加/
;若不是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!");}//数值范围超出时抛出异常 } }
此程序有如下几个缺陷:git
- 没有考虑整数除以整数会得出真分数的状况。 - 没有考虑整数与真分数进行运算的状况。 - 没有考虑两个以上的数进行运算的状况。 - 没有考虑添加小括号后运算的优先级的状况。
JUnit测试编程
/
,并如何将数字提取出来进行运算,因此借鉴了码云上一位大神的代码。先将算式中的符号与真分数分隔,在经过indexOf
把数字提取出来进行通分之类的运算,约分后再将/
放回两数之间,这样的代码实现使我和个人小伙伴收获颇多,又掌握了一门新的技能。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 |