20165205 2017-2018-2《Java程序设计》结对编程一 第二周总结
设计思路
- 编写主类
Arithmetic4
- 编写
ArithmeticFunc
类来实现计算,其中包括:加、减、乘、除、次方、开方的方法,也包含抛出异常的方法。 - 在
ArithmeticFunc
类中使用String[] str=s.split("")
来查询算式中的计算符例如+,-,*
将计算符两边的数字分别放在str[0]和str[1]当中。 - 在对计算符两边的数进行运算时分为了分式计算和整数计算。
- 在分式计算时以
/
为界限将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])
,求出分数。 - 在计算整数时就用正常方法计算就可以。
- 在输出时用了一个函数simplefraction,来输出分数的形式。
核心代码及注释
-
计算内容, 以加法方法为例:
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!");}//数值范围超出时抛出异常
} } -
抛出异常运算符:以减法为例
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 张雨昕
- 在第二周的学习当中,我们小组完善了代码,经过多次的测试改正了对于边界数值运算的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 |