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的更多相关文章

  1. ME.kkkK

    ME.kkkK 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 50 40 • Estima ...

  2. kkkK的随笔

    自我介绍 学号:211606310 姓名:柯伟敏 爱好:篮球,足球 最爱的菜:4堂的饺子 最想说的话:一切都是最好的安排 初入大学 -------------------- 选择 选择软件工程这个专业 ...

  3. kkkk

    monkey -p com.alfl.www  -v -v -v  --throttle 50 --pct-touch 30 --pct-motion 15 --pct-nav 15 --pct-ma ...

  4. 缓存、队列(Memcached、redis、RabbitMQ)

    本章内容: Memcached 简介.安装.使用 Python 操作 Memcached 天生支持集群 redis 简介.安装.使用.实例 Python 操作 Redis String.Hash.Li ...

  5. 编写高质量代码:改善Java程序的151个建议(第6章:枚举和注解___建议88~92)

    建议88:用枚举实现工厂方法模式更简洁 工厂方法模式(Factory Method Pattern)是" 创建对象的接口,让子类决定实例化哪一个类,并使一个类的实例化延迟到其它子类" ...

  6. Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  7. 缓存、队列(Memcached,Redis,rabbitMQ)

    一.Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的 ...

  8. memcached

    Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached ...

  9. 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 ...

随机推荐

  1. SpringBoot设置支持跨域请求

    跨域:现代浏览器出全的考虑,在http/https请求时必须遵守同源策略,否则即使跨域的http/https 请求,默认情况下是被禁止的,ip(域名)不同.或者端口不同.协议不同(比如http.htt ...

  2. 树莓派跑yolo

    https://blog.csdn.net/u011304078/article/details/85772764 https://blog.csdn.net/weixin_41665225/arti ...

  3. ESP8266 LUA脚本语言开发: 准备工作-LUA开发说明

    前言 开发Lua需要使用这个软件 注:该软件需要按照JDK  即 JAVA虚拟机,如果没有安装过JDK,请先看JDK安装教程安装JDK USB线连接开发板接入电脑 选择自己的串口号 波特率115200 ...

  4. CSS换行知识

    换行规则 CSS可以指定文字多行时换行的规则,说白了就是指定哪些地方可以换行 相关属性 word-break The word-break CSS property sets whether line ...

  5. [LeetCode] 379. Design Phone Directory 设计电话目录

    Design a Phone Directory which supports the following operations: get: Provide a number which is not ...

  6. PowerShell常用命令及美化(现代化的CMD)

    PowerShell可谓现代终端,是微软用来替代古老的CMD的. PowerShell拥有面向对象的思想,非常方便. 常用命令 下载文件(此处以install.ps1文件为例) $client = n ...

  7. 浅析容斥和DP综合运用

    浅析容斥和DP综合运用 前言 众所周知在数数题中有一种很重要的计数方法--容斥.但是容斥有一个很大的缺陷:枚举子集的复杂度过高.所以对于数据规模较大的情况会很乏力,那么我们就只能引入容斥DP. 复习一 ...

  8. Lambda 表达式已阅

    Lambda 表达式已阅 君子之间淡如水,何谓淡如水?并不时常想起,但却无处不在. 背景:This is f**king why we code? 可以让Java 代码异常简洁的Lambda 表达式, ...

  9. 实战django(二)--登录实现记住我

    上节初步实现了登录和注册模块,这节我们进一步实现“记住我”功能. 大体功能分为以下模块: 1.在登录时如果勾选记住我,那么就将用户username存进cookie中,跳转到index页面: 2.此时, ...

  10. AbstractExecutorService源码

    public class RunnableFutureTask { static FinalizableDelegatedExecutorService executorService = (Fina ...