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

  • 相关阅读:
    Tarjan之求LCA
    最近公共祖先(LCA)
    『Tarjan』Tarjan求强连通分量模板
    「LCA + 树上差分」[USACO15DEC]最大流Max Flow
    『主席树』可持久化线段树模板
    「树状数组」[SDOI2009]HH的项链
    「LCA」仓鼠找sugar
    「线段树」[JSOI2008]最大数
    「LCA + 最小生成树」货车运输
    『最小生成树』最小生成树模板
  • 原文地址:https://www.cnblogs.com/nmsl123/p/8910546.html
Copyright © 2011-2022 走看看