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解决方案:暂时还没解决该问题,需要看看视频研究一下。

文件扩展(加分项)

  • 现只能写入文件,下周改进。
posted @ 2018-05-08 22:36  雲深不知处  阅读(205)  评论(0编辑  收藏  举报