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 指导老师:王 ...
随机推荐
- redis : 桌面管理工具 redis-desktop-manager使用指南
概要:一款好用的Redis桌面管理工具,支持命令控制台操作,以及常用,查询key,rename,delete等操作. 下载软件,请点击下面链接,进入下载页,选择对应版本: https://redisd ...
- pm2 常用命令
pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的.它非常适合IaaS结构,但不要把它用于 ...
- 同台同时多开DELPHI2007的解决办法
Cannot create file "C:\Users\Administrator\AppData\Local\Temp\EditorLineEnds.ttr"这个问题的产生根据 ...
- 使用R语言-操作data.frame
1 向一个data.frame指定列插入一列新数据 1.1 插入一列到指定位置 y<-1:4 data1 <-data.frame(x1=c(1,3,5,7), x2=c(2,4,6,8) ...
- 基于element-ui的多选下拉框和tag标签的二次封装
前言: 今年这大半年我主要负责公司的后台教务管理的开发,这个管理系统目前主要是给公司的内部人员去配置公司的核心项目(例如:熊猫小课)的所有数据,例如课程的配置.课程期数的配置.课程版本的配置.活动的配 ...
- Hadoop是怎么分块Block的?
不多说,直接上干货! hadoop的分块有两部分. 第一部分就是数据的划分(即把File划分成Block),这个是物理上真真实实的进行了划分,数据文件上传到HDFS里的时候,需要划分成一块一块,每块的 ...
- 《Effective Java》笔记-服务提供者框架
静态工厂方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不必存在.这种灵活的静态工厂方法构成了服务提供者框架(Service Provider Framework)的基础,例如JDBC AP ...
- Java-Runoob-高级教程-实例-方法:14. Java 实例 – Varargs 可变参数使用
ylbtech-Java-Runoob-高级教程-实例-方法:14. Java 实例 – Varargs 可变参数使用 1.返回顶部 1. Java 实例 - Varargs 可变参数使用 Java ...
- JSON 简介
ylbtech-JSON: JSON 简介 JSON:JavaScript Object Notation(JavaScript 对象表示法) JSON是存储和交换文本信息的语法,类似 XML. JS ...
- MySQL学习----unsigned 无符号的总结
unsigned 为“无符号”的意思, unsigned,zerofill 既为非负数,用此类型可以增加数据长度, 例如如果 int最大是65535,那 ...