20162317-20162315结对编程-四则运算(挑战出题)

20162317-20162315结对编程-四则运算(挑战出题)

  • 四则运算

    需求分析

  • 实现个位数整数的去重出题,并要求在命令行参数形式指定题目要求。

    设计思路

  • 有了上两次的四则运算基础后,这次的题目比较容易上手,再加上是个位数整数的四则运算,因此也更为简单。
  • 根据我和20162315马军的探讨,我们决定依然采用先前的办法,将题目设立在一个数组中,奇数位放置运算符号,偶数位放置操作数,用参数为9的随机数再加上1来实现操作数为1~9的需求,最后一位放置等于号。然后将数组输出至"expression.txt"的文件中。
  • 关于在以命令行参数实现对题目的要求直接写一个类来实现其他方法类,并将参数设定为==args数组==中的特定位置的元素。

遭遇问题

  • 去重

    在多番上网查询无果后,我与结队伙伴决定用最没办法的办法,==通过将得数相等的算式筛去,以此来去重。==

    要想得到结果,就要对算式进行计算,而根据先前两次的经验,计算的方法就是将中缀表达式转化为后缀表达式,然后来进行计算。

题目的转换:

                Stack<String> sta;

  //转换为后缀表达式
                sta = new Stack<String>();

                for (int n = 0; n < middle.length - 1; n++) {
                    //符号优先级高的
                    if (isOperatorFirst(middle[n])) {
                        sta.push(middle[n]);
                    }
                    //符号优先级低的
                    else if (isOperatorLatter(middle[n])) {
                        //若栈空,则入栈
                        if (sta.empty()) {
                            sta.push(middle[n]);
                        }
                        //若栈不空,栈中符号全部弹出
                        else {
                            while (!sta.empty()){
                                    fw2.append(sta.pop() + " ");
                            }
                            sta.push(middle[n]);
                        }
                    }
                    //数字直接输出
                    else {
                            fw2.append(middle[n]+" ");
                    }
                }
                while (!sta.empty()){
                    fw2.append(sta.pop()+ " ");
                }
                fw2.append("\r\n");
                fw2.flush();
            
 
  private boolean isOperatorLatter(String token){
        return (token.equals("+")||token.equals("-"));
    }
    private boolean isOperatorFirst(String token){
        return (token.equals("*")||token.equals("/"));
    }            
    //写入是为了在另一个类中读取后缀表达式并进行计算,此处不突出介绍。

最多题目:

1062692-20170604182620289-377051124.jpg

结队互评:

    马军同学虽然编写代码的能力水平可能比我稍差一筹,但他的规划能力和对代码方法实现的思考比我要更好一点,我们一起编程时他能及时提出修改的建议,使我们少走了一些弯路。我协助他完成了不带有小括号部分的一些代码,希望他能平时能多多练习,努力提升自己编写代码的能力。如果评分总分是100分,我给我自己65分,给他35分。

UML类图

1062692-20170604182633118-589454711.jpg


Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
计划2030
·估计耗时2030
开发435525
·需求分析3020
·生成设计文档1520
·具体设计5040
·具体编码120150
·代码复审3060
·测试1020
报告6090·
测试报告5080
·事后总结,并提出过程改进计划3520
·分析下一步计划2010
合计460675

结队伙伴:
马军20162315

转载于:https://www.cnblogs.com/VersionP1/p/6941392.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值