• 结对编程项目-四则运算(第一周阶段性总结)


    结对编程项目-四则运算(阶段性总结)

    需求分析

    题目生成
    • 多运算符(可设计层级)
    • 包含括号(可单独使用)
    • 无重复题目(可单独使用)
    • 生成有意义的题目(例如:5x(5x5)等等)
    等级划分
    • Level 0:题目可相同,十以内加减法
    • level 1:题目不重复,十以内加减法
    • level 2:题目可重复,二十以内加减法

    设计思路

    计算部分
    • 中缀表达式转成后缀表达式
    • 后缀表达式计算
    题目部分
    • 使用for循环生成题目
    • 去重(将题目从中缀转成后缀,将其排序,判断是否有重复)(存在bug)
    • 括号的生成(使用两个随机数代表括号的位置)(存在bug)
    • 有意义的题目(使用list类中的subList)

    实现过程中的关键代码解释

    测试方法

    运行过程截图

    代码托管地址

    遇到的困难及解决方法

    • 当我们生成混合运算的时候,如何让随机生成括号的问题困扰了我们很久,就是考虑到如果生成了左括号如何让它一定生成右括号,不使代码算式出错的问题。
    • 构思很久以后我们只想到了如何没有错误的生成一组括号。
    private String promber2() {
            List<String> list = new ArrayList<String>();
            String[] strings;
            do {
                list.add(number());
                for (int i = 1; i < lenth(); i++) {
                    list.add(symbol());
                    list.add(number());
                }
                do {
                    Random r1 = new Random();
                    s1 = r1.nextInt(list.size() - 3);
                }
                while (s1 % 2 != 0);
                int s = list.size();
                do {
                    Random r2 = new Random();
                    s2 = r2.nextInt(s) + (s1 + 4);
                }
                while (s2 % 2 != 0 || s2 > s);
                list.add(s1, "(");
                list.add(s2, ")");
                String[] str = new String[list.size()];
                for (int i = 0; i < list.size(); i++) {
                    str[i] = list.get(i);
                }
                strings = str;
            }
            while ((strings[0].equals("(") && strings[strings.length - 1].equals(")")));
            lis = list.subList(s1, s2);
            String c = " ";
            for (int i = 0; i < strings.length; i++) {
                c += (strings[i] + " ");
            }
            return c;
        }
        public String promber3(){
            String s;
            do {
                s = promber2();
            }
            while (!isOperation1(s) || !isOperation2(s));
            return s;
        }
    
    • 但是怎样实现多组,如果用循环一个一个比较的话,在题的数目多的时候会出现代码运行速度较慢的缺点。

    感想

    结对编程给我带来了很多收获,泰毓同学在代码的构建和实现方面比较强,同时他也教会了我许多新的知识,而且,通过结对学习这种方式,为了不拖累队友我们不得不去学,可以说给我们的学习增加的动力,在和泰毓学习的过程中,两个人坐在那里一起讨论,一起研究解决方案,将问题一起解决的时候不仅学到了东西还感觉很开心。

    PSP

    PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
    Planning 计划 0.5 0.5
    · Estimate · 估计这个任务需要多少时间 0.5 0.5
    Development 开发 12.2 18.5
    · Analysis · 需求分析 (包括学习新技术) 2 3
    · Design Spec · 生成设计文档 0.5 0.5
    · Design Review · 设计复审 (和同事审核设计文档) 0.2 0.5
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 0.5 0.5
    · Design · 具体设计 2 3
    · Coding · 具体编码 2 4
    · Code Review · 代码复审 2 2
    · Test · 测试(自我测试,修改代码,提交修改) 3 5
    Reporting 报告 2.5 1.5
    · Test Report · 测试报告 2 1
    · Size Measurement · 计算工作量 0.5 0.5
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 1 0.5
    总计 15.2 20.5
  • 相关阅读:
    php函数
    字符滚动效果0515复习笔记+注释
    0514复习Windows操作及DOM的使用
    超链接文字随状态改变变色2016-0514
    js笔记之影音插入0514
    js类型转换,运算符,语句
    JS学习1简介
    json文件的json.parse(data)方法时候碰到的问题
    样式属性
    css样式表0513补
  • 原文地址:https://www.cnblogs.com/zhanghaolin/p/6854442.html
Copyright © 2020-2023  润新知