zoukankan      html  css  js  c++  java
  • 20172332『Java程序设计』课程结对编程练习_四则运算第二周阶段总结

    20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结

    小组成员

    • 20172326康皓越
    • 20172313余坤澎
    • 20172332于欣月

    小组编程照片

    设计思路

    • 设计一个生成符号类
      • 包括加减乘除和括号
    • 设计一个数类
      • 包括整数和分数
    • 设计一个表达式类
      • 需要调用符号类和数类。
    • 设计一个运算类
      • 对生成的表达式进行处理,
      • 然后使之转换成后缀表达式,
      • 进而计算出后缀表达式的值。
      • 添加判断对错和正确率的方法。
    • 在后续的扩展中设计一个文本处理类
      • 实现将生成题目写入文件中
      • 从文件中读取题目并计算和判题。

    重要代码及代码解释

    • 1.数类中的

        private int gcd(int num1,int num2)
        {
        while (num1 !=num2) {
            if (num1 > num2)
                num1 = num1 - num2;
            else
                num2 = num2 - num1;
        }
        
        return num1;
        }
        private void reduce()
        {
            if (numerator !=0)
            {
            int common = gcd(Math.abs(numerator),denominator);
            
            numerator = numerator/common;
            denominator = denominator/common;
            }
        }
      

    这两个方法使我们生成的分数进行了约分。

    • 2.生成表达式类中

                //先做出括号并且做出括号里的内容
                String kuohao = "";
                int ge = a.nextInt(2) + 2;
                Elements c = new Elements();
                c.khq();
                kuohao += c;
                for (int i = 0; i <= ge; i++) {
                    Num b = new Num();
                    b.getNum();
                    kuohao += b.toString();
                    int el = a.nextInt(2);
                    if (el == 0) {
                        c.add();
                        kuohao += c;
                    } else {
                        c.sub();
                        kuohao += c;
                    }
                }
                Num e = new Num();
                e.getNum();
                c.khh();
                kuohao += e.toString() + c;
      

    先把括号以及括号内的内容创建出来,然后再用随机数去判断括号发在表达式中的位置。

    • 3.生成表达式类中的

                //分别判断是否有无加减或乘除,并进行相应的随机添加加减或者乘除法,以保证达到混合运算的目的。
                Elements p = new Elements();
                Num w = new Num();
                w.getNum();
                if (count1 != 0 && count2 != 0)
                    result = result;
                else if (count1 == 0) {
                    Random m = new Random();
                    int n = m.nextInt(2);
                    //选择加还是减
                    if (n == 0) {
                        p.add();
                        result += p + w.toString();
                    } else {
                        p.sub();
                        result += p + w.toString();
                    }
                } else {
                    Random m = new Random();
                    int n = m.nextInt(2);
                    //选择乘还是除
                    if (n == 0) {
                        p.mul();
                        result += p + w.toString();
                    } else {
                        p.div();
                        result += p + w.toString();
                    }
                }
      

    因为等级三中无括号的是混合运算,加减其中之一和乘除其中之一必须有,为了防止表达式生成的不符合要求,所以做出了以上代码,判断是否存在加减或乘除,不存在就加上相应所缺的。

    • 4.生成表达式类中的等级三有括号的时候

                     //分别判断是否有乘除,并进行相应的乘除法添加,以保证达到混合运算的目的。
                    Elements p = new Elements();
                    Num w = new Num();
                    w.getNum();
                    if (count2 == 0) {
                        Random m = new Random();
                        int n = m.nextInt(2);
                        if (n == 0) {
                            p.mul();
                            result += p + w.toString();
                        } else {
                            p.div();
                            result += p + w.toString();
                        }
                    } else
                        result = result;
                }
      

    因为括号中就包含了加减,所以只需要判断乘除存不存在的情况

    • 5.计算类中判断正确的方法中

        if (result2 - doCal(list) < 0.001 && result2 - doCal(list) > -0.001)
      

    因为IEEE754浮点数的原因,所以可能正确答案与用户所属的正确答案有所差异,所以规定了精确度内,就认为相等。

    项目链接

    码云地址

    小组结对博客

    代码贡献度

    余坤澎 于欣月 康皓越
    个人贡献度 30% 40% 30%

    遇到的困难及解决方法

    • 困难1:刚开始创建的数类没有约分的方法,所以出现的数了可以约分的数。
    • 困难1解决方案1:书中例题之前有一个分数的类,其中就包含了约分的方法。
    • 困难2:刚开始我们是一个数必定带一个符号,但是发现括号不好加。
    • 困难2解决方案:把数和符号分开,并且先做出括号内容,再把括号加入表达式中。
    • 困难3:计算类中乘除类得出的结果不正确。
    • 困难3解决方案:暂时还没解决该问题,还需一定时间。
    • 困难4:文件处理,如今只能写入文件,还差从文件中读入。
    • 困难4解决方案:暂时还没解决该问题,需要看看视频研究一下。

    文件扩展(加分项)

    • 现只能写入文件,下周改进。
  • 相关阅读:
    GoldenGate HANDLECOLLISIONS参数使用说明
    GoldenGate for bigdata 12.3.2.1版本新特性
    使用GoldenGate EVENTACTIONS执行数据的实时触发和定制化
    基于Docker的GoldenGate部署
    Redis热点数据预写方案
    Redis缓存和数据库双写一致方案
    Redis主从复制原理和高可用方案
    Redis的并发竞争如何解决?如何保证并发写的有序?
    Redis 的单线程模型
    Nginx系列之6:重要模块
  • 原文地址:https://www.cnblogs.com/yu757503836/p/9011486.html
Copyright © 2011-2022 走看看