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分吧!真的自己基础太差了,很有必要再课余时间加深自己的编辑水平,这次还是要感谢队友和身边的大神不然一个人根本无法解决这些问题,再接再厉吧!

posted @ 2018-09-19 00:16  kkk112233  阅读(154)  评论(0编辑  收藏  举报