20165205 2017-2018-2《Java程序设计》结对编程一 第二周总结
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 |
20165205 2017-2018-2《Java程序设计》结对编程一 第二周总结的更多相关文章
- 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算
20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...
- ### 20165219 2017-2018-2《Java程序设计》结对编程一 第二周总结
20165219 2017-2018-2<Java程序设计>结对编程一 第二周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...
- 20165205 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165205 2017-2018-2<Java程序设计>结对编程一 第一周总结 需求分析 对输入的算式进行计算,要求满足一下条件: 支持整数运算,如2+5,47+7865. 支持多运算 ...
- 20165232 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165232 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...
- 20165219 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165219 2017-2018-2<Java程序设计>结对编程一 第一周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...
- 20172319 2018.04.11-16 《Java程序设计教程》 第6周学习总结
20172319 2018.04.11-16 <Java程序设计教程>第6周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题 ...
- 20172319 2018.04.11 《Java程序设计教程》第7周课堂测验(补写博客)
20172319 2018.04.11 <Java程序设计教程>第7周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
- 20172319 2018.10.19《Java程序设计教程》第7周课堂实践(补写博客)
20172319 2018.10.19 <Java程序设计教程>第7周课堂实践 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
- 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)
20172319 2018.10.12 <Java程序设计教程>第6周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...
随机推荐
- 解决新版本Vivado打开老工程IP锁住的问题
解决新版本Vivado打开老工程IP锁住的问题 1.生成IP核的状态报告 Tools -> Report -> Report IP Status 2.点击Upgrade Selected ...
- PByte和PChar的关系
作为指针是相同的, 解析的内容,稍微有点区别. var s:String;P:PChar;B:PByte;a:Integer;begin s:='1234'; P:=PChar(s);//按chr ...
- x230安装黑苹果
https://forum.51nb.com/forum.php?mod=viewthread&tid=1802786&extra=page%3D1&page=1 下载 主要就 ...
- mysql++ 3.2.3 源码安装
https://tangentsoft.com/mysqlpp/home 下载 wget https://tangentsoft.com/mysqlpp/releases/mysql++-3.2.3. ...
- Ubuntu使用操作记录/笔记
1.如何取得图形界面下的ROOT权限? 先alt+f2,然后 gksu nautilus 或者 kdesudo dolphin 2.如何使用Qt插件在Qt中进行ROS开发 http://blog.cs ...
- 在linux下使用am335x的DMA
[本文首发于cnblogs,作者:byeyear,Email:east3@163.com] 这几天在弄am3358的DMA,简化应用环境如下: am3358的FSMC接了一片FPGA: FPGA上接A ...
- Centos7 安装sz,rz命令
yum install lrzsz 我记得以前某个我敬佩的人说过压缩分很多种,有空,补充这篇笔记.加油~
- 树莓派Raspberry Pi zero w无线联网实测
第一次学习树莓派,使用的是Raspberry Pi zero w的型号. 刚开始,就只有一块板子!!!这要怎么开发啊 经过网上查阅资料,发现可以通过WiFi连接PC端实现开发测试 准备材料:一根USB ...
- elasticsearch 5.1 别的机器无法访问9200端口
版权声明:作者:jiankunking 出处:http://blog.csdn.net/jiankunking 本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显 ...
- 【RMI】使用Java反射机制实现RMI
主要包括如下类 RMIBeansManager.java RMIDemo.java RMIService.java RMIVO.java SayHello.java RMIVO.java packag ...