MElv2.kkkK
MElv2.kkkK
一、预估与实际
| PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) | 
|---|---|---|---|
| Planning | 计划 | ||
| • Estimate | • 估计这个任务需要多少时间 | 20 | 20 | 
| Development | 开发 | ||
| • Analysis | • 需求分析 (包括学习新技术) | 50 | 60 | 
| • Design Spec | • 生成设计文档 | 30 | 40 | 
| • Design Review | • 设计复审 | 20 | 20 | 
| • Coding Standard | • 代码规范 (为目前的开发制定合适的规范) | 20 | 20 | 
| • Design | • 具体设计 | 30 | 60 | 
| • Coding | • 具体编码 | 600 | 650 | 
| • Code Review | • 代码复审 | 20 | 20 | 
| • Test | • 测试(自我测试,修改代码,提交修改) | 30 | 40 | 
| Reporting | 报告 | 30 | 40 | 
| • Test Repor | • 测试报告 | 20 | 25 | 
| • Size Measurement | • 计算工作量 | 10 | 10 | 
| • Postmortem & Process Improvement Plan | • 事后总结, 并提出过程改进计划 | 10 | 10 | 
| 合计 | 1015 | 
二、需求分析
我通过上网百度的方式了解到,四则运算数学有如下的几个特点:
- 要判断数的大小是否可以用于计算
 - 要注意除数要是大于0的自然数
 - 要注意判断结果不能有负数
 - 要运用加括号
 
三、设计
1. 设计思路
- 计算符号判断
 - 生成随机数
 - 生成随机算式
 - 计算最终的结果
 - 将结果放入文本中
 
2. 实现方案
写出具体实现的步骤
比如:
- 准备工作:先在Github上创建仓库,克隆到本地...
 - 技术关键点:如何判断符号和添加括号
 
四、编码
1. 调试日志
- 计算符号判断,生成随机数
 - 把符号数字分两个集合
 - 利用遍历计算结果
 - 将答案打印到文本
 
2. 关键代码
 private static void calculate() {
        LinkedList<String> mList=new LinkedList<>();
        String[] postStr=sr.toString().split(" ");
        for (String s:postStr) {
            if (isOperator(s)){
                if (!mList.isEmpty()){
                    int N1=Integer.valueOf(mList.pop());
                    int N2=Integer.valueOf(mList.pop());
                    if (s.equals("/") && N1==0){
                    	answer="wrong";
                    	sr.setLength(0);
                        return;
                    }
                    if (s.equals("/")&& (N2%N1!=0)){
                    	answer="wrong";
                    	sr.setLength(0);
                        return;
                    }
                    if (s.equals("-")&& N2<=N1){
                    	answer="wrong";
                    	sr.setLength(0);
                        return;
                    }
                    int newNum=cal(N2,N1,s);
                    mList.push(String.valueOf(newNum));
                }
            }
            else {
                //数字则压入栈中
                mList.push(s);
            }
        }
        if (!mList.isEmpty()){
            answer=mList.pop();
        }
        sr.setLength(0);
    }
3. 代码规范
请给出本次实验使用的代码规范:
- 第一条驼峰式风格且首字母大写
 - 第二条单行字符数限制不超过120个
 - 第三条手动处理异常
 
并人工检查代码是否符合规范
五、测试
|java MathExam6301 1 1        |查找不到-n或者-grade
|java MathExam6301 -n 1 -grade 5        |输入年级应在一到三年级
|java MathExam6301 -n 1000000 -grade 1        |输入题目数量应该在1~1000
|java MathExam6374 -n 100 -grade 2        |请严格按照格式输入
|java MathExam6374 -grade 5000 -, 1        |请严格按照格式输入
六、总结
这次的作业明显比第一次更加艰难,无论是过程还是结果都非常让人煎熬,过程中出现很多难题,如何利用括号,如何判定括号里的值的正负性,如何解决运行不了的问题,一个个问题接种而来,第一次觉得自己有心无力,虽然最后有些问题得到了解决但是还是十分的困难,这次给自己打个60分吧!真的自己基础太差了,很有必要再课余时间加深自己的编辑水平,这次还是要感谢队友和身边的大神不然一个人根本无法解决这些问题,再接再厉吧!

MElv2.kkkK的更多相关文章
- ME.kkkK
		
ME.kkkK 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 50 40 • Estima ...
 - kkkK的随笔
		
自我介绍 学号:211606310 姓名:柯伟敏 爱好:篮球,足球 最爱的菜:4堂的饺子 最想说的话:一切都是最好的安排 初入大学 -------------------- 选择 选择软件工程这个专业 ...
 - kkkk
		
monkey -p com.alfl.www -v -v -v --throttle 50 --pct-touch 30 --pct-motion 15 --pct-nav 15 --pct-ma ...
 - 缓存、队列(Memcached、redis、RabbitMQ)
		
本章内容: Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 redis 简介.安装.使用.实例 Python 操作 Redis String.Hash.Li ...
 - 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)
		
建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...
 - Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
		
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
 - 缓存、队列(Memcached,Redis,rabbitMQ)
		
一.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...
 - memcached
		
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...
 - 2016 Multi-University Training Contest 1 F.PowMod
		
PowMod Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Su ...
 
随机推荐
- Java高级——泛型
			
本文主要讲述泛型的使用 1.在集合中的使用 2.自定义泛型类.泛型接口.泛型方法 3.泛型与继承的关系 4.通配符 由于第一点和第二点在平常的编码工作中已熟练,本文重点讲述后面两点. 直接show t ...
 - Redis笔记2-Redis安装、配置
			
下载安装包 wget http://download.redis.io/releases/redis-4.0.8.tar.gz解压 tar xzvf redis-4.0.8.tar.gz安装 cd r ...
 - 【oracle】 months_between(date1,date2)
			
(20090228,20080228)====12 (20090228,20080229)====12 (20080229,20070228)====12 (20100331,20100228)=== ...
 - [RN] React-Native中Array渲染的优化
			
React-Native中Array渲染的优化 例如用Push加进去的数据: constructor(props){ super(props); this.state = { b ...
 - css网格布局
			
先来一段基本布局 <!doctype html> <html> <head> <meta charset="utf-8"> < ...
 - day 29
			
Let the dead have the immortality of fame, but the living the immortality of love. 让逝者拥有不朽的荣誉,让生者拥有不 ...
 - impala进阶
			
一.impala存储 1.文件类型 2.压缩方式 二.impala分区 1.创建分区方式 partitioned by 创建表时,添加该字段指定分区列表: create table t_person( ...
 - [LeetCode] 883. Projection Area of 3D Shapes 三维物体的投影面积
			
On a N * N grid, we place some 1 * 1 * 1 cubes that are axis-aligned with the x, y, and z axes. Each ...
 - 屏蔽flash地区识别
			
host文件添加以下0.0.0.0 geo2.adobe.com
 - Python3 使用企业微信 API 发送消息
			
#coding=utf- import requests import json Secret = "TUbfeW8nFQakwOS4czm13SCnxSUPOqY2K0XHtM8XLT34 ...