20165205 2017-2018-2《Java程序设计》结对编程一 第一周总结
20165205 2017-2018-2《Java程序设计》结对编程一 第一周总结
需求分析
对输入的算式进行计算,要求满足一下条件:
- 支持整数运算,如2+5,47+7865.
- 支持多运算符运算,如6/9+4/9,4+7*9.
- 支持分数运算(真分数),如3/4.
- 正确率高
- 有输入提示信息
- 能够处理非法输入(返回异常)
扩展需求:
- 支持自动生成题目
- 支持多语言
设计思路
- 编写主类
Arithmetic4 - 编写
ArithmeticFunc类来实现计算,其中包括:加、减、乘、除、次方、开方的方法,也包含抛出异常的方法。

核心代码及注释
计算内容, 以加法方法为例:
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 张雨昕
- 我与我的伙伴在一起讨论了很久对于代码的的设计,在学习了老师对于堆栈的代码之后得到了一些灵感,所以写出了最先的框架,对不同运算符做筛选,然后针对不同运算符做出运算,这样就完成了这个代码。
PSP表格
| PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
| Planning | 计划 | 30 | 45 |
| Estimate | 估计这个任务需要多少时间 | 180 | 180 |
| Development | 开发 | 100 | 130 |
| Analysis | 需求分析(包括学习新技术) | 130 | 140 |
| Design Spec | 生成设计文档 | 100 | 65 |
| Design Review | 设计复审(和同事审核设计文档) | 30 | 20 |
| Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 20 | 40 |
| Design | 具体设计 | 50 | 60 |
| Coding | 具体编码 | 45 | 30 |
| Code Review | 代码复审 | 15 | 15 |
| Reporting | 报告 | 60 | 90 |
| Test Report | 测试报告 | 30 | 45 |
| Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 10 | 25 |
| 合计 | 880 | 985 |
感想
对于本次结对编写代码,我感受到了1+1>2的感觉,在编写代码的过程中两个人的合作可以及时改写不正确的代码,并且能够得到新的灵感和想法,使我们的代码更加完善,更加严谨。同时也能够找出自己知识上的漏洞,进行补充,真的是妙啊。
20165205 2017-2018-2《Java程序设计》结对编程一 第一周总结的更多相关文章
- 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 支持整数运 ...
- 20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算
一.码云链接 项目名称FAO 码云链接 二.需求分析 实现一个命令行程序: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确 ...
- 20172306 2018-2019 《Java程序设计与数据结构》第一周学习总结
20172306 2018-2019 <Java程序设计与数据结构(下)>第一周学习总结 教材学习内容总结 第一章 概述 (程序=数据结构+算法 软件=程序+软件工程) 1.1 软件质量 ...
- 20172306《Java程序设计与数据结构》第一周总结
20172306<Java程序设计>第一周学习总结 教材学习内容总结 本周主要学习<Android和Java>书中的第二十三章和第二十六章. 第二十三章:Android简介 A ...
- 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算
20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...
- 20165205 2017-2018-2《Java程序设计》结对编程一 第二周总结
20165205 2017-2018-2<Java程序设计>结对编程一 第二周总结 设计思路 编写主类Arithmetic4 编写ArithmeticFunc类来实现计算,其中包括:加.减 ...
- ### 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周学习总结 目录 教材学习内容总结 教材学习中的问题和解决过程 代码调试中的问题和解决过程 代码托管 上周考试错题 ...
随机推荐
- 文件上传失败 -nginx报错 client intended to send too large body: 1331696 bytes
location / { root /data/fastdfs/data; include gzip.conf; ngx_fastdfs_module; client_max_body_size 10 ...
- 【java】数据类型
逻辑型boolean: boolean类型数据只能取值True或False,不可以0或者非0替代True或False,这点与c语言不同. 字符型char: 一个char类型的字符占两个字节.一个汉字也 ...
- webGL之three.js入门4--ThreeJS Editor入门篇
因为工作需要,要看threejs editor的源码,顺便记录过程. github下载的源码目录是这样的 但是editor和其他文件夹内的内容的关联的,我需要将其独立出来并且编辑editor. 进入e ...
- 卸载QQ,360,迅雷,搜狗
如题. 以及一切中国的流行软件. 这帮家伙都不是一个人,后面都跟着一帮子助手,杀毒,自我保护,管家,桌面,播放器,等等等等,你也不知道电脑速度为什么会这么慢,但是他变慢了. 今天头天用 360优化速度 ...
- vlan交换机的端口模式有哪几种
一 端口类型1 ,Access用户模式2 ,Trunk链路模式3 ,Hybrid模式(跟Trunk很类似但比trunk高级)二 端口介绍2.1 ,Access类型端口:只允许默认vlan的以太网帧,也 ...
- ALGO-147_蓝桥杯_算法训练_4-3水仙花数
问题描述 打印所有100至999之间的水仙花数.所谓水仙花数是指满足其各位数字立方和为该数字本身的整数,例如 =^+^+^. 样例输入 一个满足题目要求的输入范例. 例: 无 样例输出 xxx xxx ...
- solrCloud 4.9 分布式集群部署及注意事项
环境搭建 一.zookeeper 参考:http://blog.chinaunix.net/uid-25135004-id-4214399.html 现有4台机器 10.14.2.201 10.14. ...
- 使用RetionalRose根据现有的java工程逆向生成类图
1.进入RetionalRose选择J2EE模板 2.在菜单栏选择tools->java/j2EE->reverse engineer 3.编辑路径Edit CLASSPATH选择要生成类 ...
- 使用python操作word
有两种方式: 使用win32com 使用docx 1.使用win32com扩展包 只对windows平台有效 代码: # coding=utf-8 import win32com from win32 ...
- 无法将当前工程转化成model 2.5/3.1:Cannot change version of project facet Dynamic Web Module to 2.5.
Description Resource Path Location TypeCannot change version of project facet Dynamic We ...