加减乘除混合版

今天又是熬夜的一天

结对作业

211606319 林志强 211606321 刘杰

一、预估与实际

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划
• Estimate• 估计这个任务需要多少时间2030
Development开发
• Analysis• 需求分析 (包括学习新技术)600679
• Design Spec• 生成设计文档90130
• Design Review• 设计复审3050
• Coding Standard• 代码规范 (为目前的开发制定合适的规范)5575
• Design• 具体设计2535
• Coding• 具体编码4460
• Code Review• 代码复审2030
• Test• 测试(自我测试,修改代码,提交修改)1530
Reporting报告
• Test Repor• 测试报告3044
• Size Measurement• 计算工作量1520
• Postmortem & Process Improvement Plan• 事后总结, 并提出过程改进计划3045
合计9741228

二、需求分析

  • 通过查询资料获得以下信息
  • 一年级

          1  所学内容有一百以内的加减法,结果不会大于100和不存在负数
          2  一般都是一步运算
  • 二年级

            1  加深了在一年纪所学的加减法运算(运算数字加大)
            2  开始学习九九乘法表
            3 出现除法的余数运算
            4 最多的两步混合加减整除运算
  • 三年级

            1 在一二年级的基础上可以加大一定的数字计算
            2 出现多步混合整数运算(包括括号和最多的四步运算)
  • 经过分析 我觉得程序应该

            1  在运算含除法的混合运算时,除法的结果要是整数,不能含有余数。
            2  运算的结果不能有负数出
            3  在输出题的时候要出现括号

三、设计

设计思路

  • 1 先要设计出含有2~4个随机运算符的式子
  • 2 在计算结果的时候要根据乘除法法规则使用括号计算出结果
  • 3 除去除数是0的情况和输出的结果符合要求

    流程图

1472630-20180919111331688-212755450.png

实现方案

  • 准备工作:先在github上创建仓库,克隆到本地。
  • 重要关键点:
    逆波兰式的理解以及应用
    无括号下的四则运算

四、编码

  • 1、创建三个类,分别实现一二三年级的 方法
  • 2、使用数组的方式,把符号存入数组随机,实现出现随机的混合运算题目
  • 3、使用逆波兰算法来输出已经随机好了的混合运算题目的答案

1、调试日志

  • 1、在已经出现混合运算无法进行乘除规则运算
  • 2、在混合运算中除法出现余数的处理

2、关键代码

public static void grade_Three() {
        System.out.println("题目的数量:");
        Scanner n=new Scanner(System.in);
        int x=n.nextInt();
        int i1[]=new int[x];
        int i2[]=new int[x];
        int i3[]=new int[x];
        int i4[]=new int[x];
        int i5[]=new int[x];
        String i6[]=new String[x];
        String i7[]=new String[x];
        String i8[]=new String[x];
        int l=0;
        String q[]=new String[4];
        q[0]="+";
        q[1]="-";
        q[2]="X";
        q[3]="/";
        for(int m=0;m<x;m++) {
            int a=(int)(1+Math.random()*20);
            int b=(int)(1+Math.random()*20);
            int a1=(int)(1+Math.random()*20);
            int a2=(int)(1+Math.random()*20);
            int c=(int)(1+Math.random()*2);
            int d=(int)(Math.random()*q.length);
            int d1=(int)(Math.random()*q.length);
            int d2=(int)(Math.random()*q.length);
            i1[m]=a;
            i2[m]=b;
            i3[m]=a1;
            i4[m]=a2;
            i5[m]=c;
            i6[m]=q[d];
            i7[m]=q[d1];
            i8[m]=q[d2];
            l++;
            if(c==0) {
                System.out.println(" ("+l+") " + a + " " + q[d] +" " + b + " = ");
            }
            if(c==1){
                System.out.println(" ("+l+") " + a + " "+ q[d] + " " + b + " " +q[d1] + " "+ a1 +" = ");
            }
            if(c==2){
                System.out.println(" ("+l+") " + a + " "+ q[d] + " "+ b + " " +q[d1]+ " " + a1 +" "+ q[d2]+" " + a2 + " = ");
            }
        }
        System.out.println("                                 ");        
        int y=0;
        for(int z=0;z<x;z++) {
            y++;
            if(i5[z]==0) {
                System.out.println(" ("+y+") " + i1[z] + " " + i6[z] +" " + i2[z] + " = " );
            }
            if(i5[z]==1){
                System.out.println(" ("+y+") " + i1[z] + " "+ i6[z] + " " + i2[z] + " " +i7[z] + " "+ i3[z] +" = ");
            }
            if(i5[z]==2){
                System.out.println(" ("+y+") " + i1[z] + " "+ i6[z] + " "+ i2[z] + " " +i7[z]+ " " + i3[z] +" "+ i8[z]+" " + i4[z] + " = ");
            }
    }
            }

3、代码规范

  • 1:不允许任何未经预先定义的常量直接出现在代码中。
  • 2:减少代码嵌套层次
  • 3:左小括号和字符之间不出现空格;同样的,有小括号和字符之间也不出现空格。
  • 4:注意避免使用相同或类似的名字

并人工检查代码是否符合规范

五、测试

开始输入年级并在下一步的情况下输入所需要的题的数目
得到并输出相应年级的相关题目以及答案

六、总结

一周的结队作业已经过去,虽然写的代码还有很多的bug,但是也体会到了团队合作的重要性,从刚开始看到题目的一脸懵逼到一步步的设计完成,在这个过程中学习了很多。过程中发生了许许多多的bug,例如刚和搭档以及问一些大佬,写出了2~4个运算符的混合题目,但是一直求不出答案,本来是用穷举法求答案,但是太过于复杂,容易出错,后来才知道要用逆波兰算法求答案。 在以后的作业会增加自己的独立写代码的能力与时间,去适应现在环境,要多去理解和实践。

转载于:https://www.cnblogs.com/1410L/p/9672180.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值