zoukankan      html  css  js  c++  java
  • 20165225结对编程四则运算第二阶段总结

    20165225结对编程四则运算第二阶段总结


    需求分析:

    • 该程序能自动生成四则运算。

    • 需要有四种判断.要根据定义的范围输出题目.可生成真分数类计算式

    • 录入结果后能判断对错。

    • 有单独类提前知晓计算结果.有单独类可储存现有输入结果.两者可以比较.可统计输出与输入结果相比较的正确率。

    设计思路:

    • 设计三个难度,对应运算符的多少以及是否加入括号
      设计两种类,一种用来生成题目,一种用来计算题目
      计算:现将中缀表达式转换为后缀,在进行计算

    • 完善了上次的代码。

    UML类图:

    image

    代码:

    import java.util.Random;
    
    
    public class NewProject extends SetNum{
        public String Front(){
            String result;
            switch (getC()){
    
                case 0:
                    result = getA()+Operator[getB()];
    
                    break;
                case 1:
                    result = getA()+Operator[getB()]+getA()+Operator[getB()];
    
                    break;
                default:
                    result = getA()+Operator[getB()]+getA()+Operator[getB()]+getA()+Operator[getB()];
            }
            return result;
        }
        public String Middle(){
            String result;
            switch (getC()){
                case 0:
                    result = getA()+"";
                    break;
                case 1:
                    result ="("+getA()+Operator[getB()]+getA()+")";
                    break;
                    default:
                        result = "("+getA()+Operator[getB()]+"("+getA()+Operator[getB()]+getA()+")"+Operator[getB()]+getA()+")";
            }
            return result;
        }
        public String End(){
            String result;
            switch (getC()){
                case 0:
                    result = Operator[getB()]+getA();
                    break;
                case 1:
                    result = Operator[getB()]+getA()+Operator[getB()]+getA();
                    break;
                    default:
                        result =  Operator[getB()]+getA()+Operator[getB()]+getA()+Operator[getB()]+getA();
            }
            return result;
        }
        public String Allpart(){
            String result;
            switch (getC()){
                case 0:
                    result = Front()+Middle();
                    break;
                case 1:
                    result = Middle()+Front();
                    default:
                        result = Front()+Middle()+End();
            }
            return result;
        }
        public String JudgeAllpart(){
            String result =Allpart();
            for(int i = 0;i<result.length();i++){
                if ((result.charAt(i)=='/')&&(result.charAt(i+1)=='0')){
                    result = Allpart();
                }
            }
            return result;
        }
    
    }
    
    import java.util.Random;
    
    public class SetNum {
        Random in = new Random();
        int a;
        int b;
        int c;
    
        public int getC() {
            setC();
            return c;
        }
    
        public void setC() {
            this.c = in.nextInt(3);
        }
    
        String [] Operator = {"+","-","*","/"};
    
        public int getB() {
            setB();
            return b;
        }
    
        public void setB() {
            this.b = in.nextInt(4);
        }
    
        public void setA() {
            this.a = in.nextInt(10);
        }
    
        public int getA() {
            setA();
            return a;
        }
    }
    

    测试代码:

    public void testCount() throws Exception {
    //TODO: Test goes here...
    String line;
    BufferedReader rdr = new BufferedReader(new FileReader("testdata.txt"));
    while ((line = rdr.readLine()) != null) {
        if (line.startsWith("#")) {
            continue;
        }
        StringTokenizer st = new StringTokenizer(line);
        if (!st.hasMoreTokens()) {
            continue;
        }
        String val = st.nextToken();
        String expected = val;
    
        LinkedList<String> argument_list = new LinkedList();
        while (st.hasMoreTokens()) {
            argument_list.add(st.nextToken());
        }
        Postfix a = new Postfix();
        a.transferToPostfix(argument_list);
        assertEquals(expected, a.transferToPostfix(argument_list));;
    }
    }
    

    测试结果:

    image

    功能截图:

    image

    结对感受:

    • 很开心这个又一次的合作,不过同时也明白了自己的不足。两个人确实能想到很多,也能相互学习到许多,总的来说还是挺有满足感的。

    结对编程的照片:

    image

  • 相关阅读:
    【pandas】读取csv并拆分列
    【Python】读写csv、xlsx乱码,一篇文章搞定
    【mac】彻底移出安装包密码
    【finebi】基于波士顿矩阵模型的应用
    【pandas】3种方法搞定,分组排序求topN
    Supervisord远程命令执行漏洞(CVE-2017-11610)复现
    Visual studio + Qt VS Tool 开发环境相关问题汇总
    SQL学习(五) 高级处理
    SQL学习(四)集合运算
    SQL学习(三) 复杂查询
  • 原文地址:https://www.cnblogs.com/nmsl123/p/8910546.html
Copyright © 2011-2022 走看看