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

文件扩展(加分项)

  • 现只能写入文件,下周改进。

20172332『Java程序设计』课程结对编程练习_四则运算第二周阶段总结的更多相关文章

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

    20172313『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 结对伙伴 20172326康皓越 博客地址(http://www.cnblogs.com/326477465-a/p/90 ...

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

    20172326『Java程序设计』课程结对编程练习_四则运算第二周阶段总结 小组成员 20172313 余坤澎 20172332 于欣月 20172326 康皓越 小组编程照片 设计思路 通过一个E ...

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

    20172311『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址 对结对伙伴的评价:黄宇瑭同学的优势在于能够想出一 ...

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

    20172321『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172324 姓名 :曾程 伙伴第一周博客地址: 对结对伙伴的评价:一个很优秀的同学,在这次项目中 ...

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

    20172325『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 结对伙伴博客链接 刘辰同学对编程的积极程度很高,并且在编程能力上很不错,有 ...

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

    一.结对对象 姓名:周亚杰 学号:20172302 担任角色:驾驶员(周亚杰) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...

  7. 20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结

    20172311『Java程序设计』课程 结对编程练习_四则运算第一周阶段总结 结对伙伴 学号 :20172307 姓名 :黄宇瑭 伙伴第一周博客地址: http://www.cnblogs.com/ ...

  8. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习_四则运算 第二周

    一.结对对象 姓名:侯泽洋 学号:20172308 担任角色:驾驶员(侯泽洋) 伙伴第二周博客地址 二.本周内容 (一)继续编写上周未完成代码 1.本周继续编写代码,使代码支持分数类计算 2.相关过程 ...

  9. 2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算——第一周

    2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算 组队成员: 仇夏 学号: 20172310 博客地址:点击这里 1. 需求分析: 可生成题目: - 输入要想生成 ...

随机推荐

  1. C++较精确的测试代码运行时间

    #include <chrono> using namespace chrono; int main() { auto t0 = system_clock::now(); //测试代码 a ...

  2. Redis 之武林大会 - 哨兵(Sentinel)

    前言 Redis在出从复制的模式下,一旦主节点由于故障不能提供服务,需要人工降从节点晋升为主节点,同时还要通知应用方更新主节点的地址,在很多应用场景下,这样的故障处理方式是无法被接受的.不过幸运的是R ...

  3. PHP常用函数归类【持续整理】

    学习了这么久PHP,基础知识总感觉不牢靠,尤其是数组,字符串函数的应用,全部手敲过次手,做出总结都是基础,在回顾一下吧. 一.PHP基础语法 变量,常量     严格区分大小写,但内置结构或关键字无所 ...

  4. 树莓派GPIO控制LED彩灯

    树莓派使用GPIO接口来控制LED灯,自制五彩炫光的节日彩灯. 1.硬件准备 a. 树莓派(Raspberry Pi)一个 b. 彩色RGB二极管 c. 杜邦线 d. 5V电源引脚 以上所有零件均可在 ...

  5. STL的六大容器之iterator----自定义范式

    STL的iterator组件,分离了容器和算法. 一.规定 在STL体系下定义iterator,要满足规定的一些规范: 1.iterator_category 有5中分类,决定胃具体的操作,如:++, ...

  6. FPGA千兆网UDP协议实现

    接着上一篇百兆网接口的设计与使用,我们接着来进行FPGA百兆网UDP(User Datagram Protocol)协议的设计. 1)UDP简介 在此,参考博主夜雨翛然的博文“https://www. ...

  7. Shrio第一天——入门与基本概述

    一.Shiro是什么 Apache Shiro是Java的一个安全框架.(希罗:/笑哭) Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境. sh ...

  8. jquery ajax实例教程和一些高级用法

    jquery ajax的调用方式:jquery.ajax(url,[settings]),jquery ajax常用参数:红色标记参数几乎每个ajax请求都会用到这几个参数,本文将介绍更多jquery ...

  9. 20155227 2016-2017-2 《Java程序设计》第十周学习总结

    20155227 2016-2017-2 <Java程序设计>第十周学习总结 教材学习内容总结 Java的网络编程 网络编程 就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所 ...

  10. 【转载】ID3DXSPRITE接口简单使用

    原文:ID3DXSPRITE接口简单使用 前些日子一直研究DDraw,毕竟是DirectX7的东西了,所以转手用DirectD3D9,用了Surface进行绘图,可是怎么做透明色也都是不行loadfr ...