2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算

组队成员: 仇夏
学号: 20172310
博客地址:
@王志伟 四则运算第一周博客 @仇夏四则运算第一周博客
@王志伟 四则运算第二周博客 @仇夏四则运算第二周博客
结对照片:

1.进度进程:

1.上周进度:

  • 已完成:
    - 完成了生成中缀表达式的类。
    - 完成了main函数用来运行的类。
    - 中缀表达式转化成后缀表达式的类
    - 后缀表达式的计算。
    - 去重。
    - 代码的完善与美化。
  • 待完成:
    - 将生成的题目存到一个文件中。
    - UML类图的完善。

2.这周进度:

  • 已完成:
    - 完成了生成中缀表达式的类。
    - 完成了main函数用来运行的类。
    - 中缀表达式转化成后缀表达式的类
    - 后缀表达式的计算。
    - 去重。
    - 代码的完善与美化。
    - 将生成的题目存到一个文件中。
    - UML类图的完善。

2.项目介绍:

  • 这个程序要求用户输入所要生成问题的个数n(每个算式的等级都是随机的且最高级为5级),之后每出来一个问题就要求用户输入他计算的得到的答案。程序将自动计算出正确答案,并与用户答案相比较,最后所有问题计算完后,电脑自动显示所有正确答案与用户答案,并给出正确率。
  • 创建一个文件,并将生成的题目存入文件,并从文件中读题并计算:

3.项目中遇到的问题:

由于前面两周遇到的问题已经在前两篇博客中指出,因此在本篇博客中不再赘述。这里只说出这周解决的问题:

  • 问题一:
    在进行比较符号优先级的时候,出现了一些问题。例如在考虑一个符号是否应该进栈时,应该与栈顶元素进行比较,比他高就进栈,低就栈顶元素出栈,直到遇到比他高的元素或者栈中没有元素。

    举个例子:
    3+5×2-1=
    第一步:在考虑“-”是否进栈时, 栈中元素为: + × 暂时输出的后缀表达式为: 3 5 2
    第二步:此时应该与栈顶元素“×”比较:没有栈顶元素优先级高,则输出,此时栈中元素为: + 暂时输出的后缀表达式为: 3 5 2 ×
    再与栈顶元素“+”比较:没有栈顶元素优先级高,则输出,此时栈中元素为: 空 暂时输出的后缀表达式为: 3 5 2 × +// 我遇到的问题是如何调用符号“+”
    此时栈中没有元素,则“-”入栈。
    ...
    最后得到的后缀表达式为:3 5 2 × + 1 - =

因为我符号优先级进行比较运用的方法是构建一个数组,因此在调用已经存入栈的元素不好再进行调用(它的横坐标与纵坐标每次赋值没有规律,不好进行赋值)。

  • 解决方案:我们这个项目进行计算时不用考虑包含括号的运算。因此我们发现一个规律:当需要进行二次符号比较时,往往是将栈中的元素全部输出,且栈中的元素最多不会超过两个!因此我们的解决方案是当需要进行二次比较时,就把栈中元素全部输出即可!

    ************************************************************************************************
    *******************************************分割线*********************************************
    ************************************************************************************************
  • 问题二:
    图中的正确答案都是一样的,但是问题不同的!!
  • 解决方案:我们猜测出现这个问题的原因是:在从自己创建的文件中读取写入的问题时,每一次都是只读取第一行。因此在读取第一行以后需要跳过已经读取过的行。因此我增添了下面语句,用于跳过已经读取的行。

4.UML类图:

5.项目代码链接:

项目目录

6.成员感想总结:

  • 20172309:

    嗯,写到这时这个项目也总算是做完了。心中难免是有点激动与开心的(特别是看到与队友一起制作的程序运行的时候),但是我觉得,我们更应该记住的是在制作这个项目过程中所收获的东西。
    最初与队友接到这个项目的时候,队友与我都是一头雾水。因为我们两什么都不知道,我们就一起查资料。在第一周的时候,因为对这个项目的不了解,我不知道干什么,也不知道应该干什么,所以我就觉得非常的沮丧,甚至有过放弃的念头,但是这时队友就过来安慰我,让我不要放弃(在整个过程中,我们互相鼓励),同时她还已经完成了一部分的代码,同时还给我讲解。这就让我一下子了解了我下一步应该干什么(论队友的重要性!^_^),总而言之,再次感谢我的队友。
    在此后的两周至今,队友与我都是秉承“谁有空就谁做,谁能做就多做”的观念进行编码的。在其中的过程中,我们一起讨论、分享自己的方法,然后把最好的方法在代码中实现。在这一过程中,因为队友最近都比较忙,所以项目编写任务自然地都落在我身上(队友准备请我吃饭吧)。在其间,我也遇到了不少问题,因此找了许多的同学帮忙。比如侯泽洋同学郭恺同学(这里是他们的博客,就当给他们打广告吧)。不过,队友在百忙之中仍然很关心这个项目的,她时不时的在看过程序后给我提出程序存在的问题(队友是大佬,带我装×带我飞)。所以这个程序才能这么完美。

  • 20172310:

    首先能和我的小伙伴组队我是感到很开心的。队友是个编程能力很不错的人哟
    ٩(๑❛ᴗ❛๑)۶,而且态度还很积极,完成了这次任务的很多事呢,给个大大的赞
    (σ゚∀゚)σ..:*☆ 哎哟不错哦。

我认为我们做的好的方面是:

  1. 在任务分配上很快达成了一致,使得任务能够快速的进行下去。虽然前期我们是打算一起完成全部的任务,但考虑到各自的时间有差异,而且我的编程能力不是很好,所以为了更加的高效且团队成员能够都能展现自己能力,我们进行了采取了分工合作的方式。
  2. 在编程的时候我们都能拿出自己的看法,积极地讨论,然后接受队友的意见和想法,来完善我们的代码。
  3. 遇到困难的时候互相鼓励,一点一点地解决了困难。
    做得不足的几个方面:
    1. 对任务的整体把握不是很好,有些代码过于的繁琐,没能精简。
    2. 因为后期我在忙一些复杂的(杂七杂八的)事情,所以导致队友一个人完成了很多的事情,我都没有出到什么力,不过好在队友很给力呢。
    3. 编程能力还是有些欠缺,有些方式能够想得到,但是却都实现不了。

7. 好友评分:

王志伟 仇夏
个人贡献度 50% 50%

2017-2018-20172309 『Java程序设计』课程 结对编程练习_四则运算_第三周的更多相关文章

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

    2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周 博客要求 组内同学需各自发表博客 博客中需包含以下内容: 相关过程截图 关键代码解释 遇到的困难及解决 ...

  2. 2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算

    2017-2018-2 165X 『Java程序设计』课程 结对编程练习_四则运算 经过第一阶段的学习,同学们已经熟悉了这门语言基本的用法.在一次又一次对着电脑编写并提交代码,进行练习的时候,有没有觉 ...

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

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

  4. 2017-2018-2 20165225『Java程序设计』课程 结对编程练习_四则运算

    2017-2018-2 20165225『Java程序设计』课程 结对编程练习_四则运算 需求分析: 支持整数,可进行多运算符运算,有优先级. 设计思路: 在有括号的情况下,先计算得出括号中的结果,如 ...

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

    20172325『Java程序设计』课程 结对编程练习_四则运算第三周阶段总结 结对伙伴 学号:20172306 姓名:刘辰 在这次项目的完成过程中刘辰同学付出了很多,在代码的实践上完成的很出色,在技 ...

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

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

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

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

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

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

  9. 2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段

    2017-2018-2 1723 『Java程序设计』课程 结对编程练习-四则运算-最后阶段 最后的一周,时间越来越紧张,因为之前的拖沓和一些事情的耽误,导致了如今的紧张,这一周应该是我们小组效率最高 ...

随机推荐

  1. 『实践』Matlab实现Flyod求最短距离及存储最优路径

    Matlab实现Flyod求最短距离及存储最优路径 一.实际数据 已知图中所有节点的X.Y坐标. 图中的节点编号:矩阵中的编号 J01-J62:1-62; F01-F60:63-122; Z01-Z0 ...

  2. linux unzip 中文乱码解决方法

    引自:https://blog.csdn.net/abyjun/article/details/48344379 unzip -O CP936 xxx.zip (用GBK, GB18030也可以)

  3. 测试开发之Django——No8.Django中的视图与URL配置

    在Django中,页面内容是靠views function(视图函数)来产生,URL定义在URLconf中. 这是一个纯净项目的url配置文件,他存在的目录,是与setting文件在同一个目录中. u ...

  4. VSCode配置python调试环境

    VSCode配置python调试环境 很久之前的一个东东,翻出来看看 VSCode配置python调试环境 * 1.下载python解释器 * 2.在VSCode市场中安装Python插件 * 4.在 ...

  5. 并发之AQS原理(三) 如何保证并发

    并发之AQS原理(三) 如何保证并发 1. 如何保证并发 AbstractQueuedSynchronizer 维护了一个state(代表了共享资源)和一个FIFO线程等待队列(多线程竞争资源被阻塞时 ...

  6. 并发之atomicInteger与CAS机制

    并发之atomic与CAS自旋锁 通过前几章的讲解我们知道i++这种类似操作是不安全的.针对这种情况,我们可能会想到利用synchronize关键字实现线程同步,保证++操作的原子性,的确这是一种有效 ...

  7. 性能测试二十三:环境部署之Redis安装和配置

    redis:非关系型数据库,内存数据库,no-sql典型,   数据存放在内存中,一断电或者关闭就没有了 mysql.oracle.sqlserver···是关系型数据库,数据存放在磁盘中 一个Red ...

  8. 2017-2018-2 20155225《网络对抗技术》实验五 MSF基础应用

    2017-2018-2 20155225<网络对抗技术>实验五 MSF基础应用 ms08_067 用search命令,搜索与ms08_067相关的模块,如图: 找到了对应的攻击模块expl ...

  9. layer.js弹出框

    HTML <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  10. 小丸工具箱FAQ

    下载地址:https://maruko.appinn.me/index.html 本文章是把一些使用小丸工具箱中常见的操作失误或出错的问题集中写出并提出解决方法,以便大家寻找解决并避免重复提问. 文章 ...