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


    四则运算第一周总结

    需求分析(方艺雯)

    • 能随机生成由使用者确定的任意多道四则运算题目
    • 题目的难度等级可以选择,也可以选择不做混合运算。
    • 题目运算实现中缀表达式转为后缀表达式并计算。
    • 可以判断正误,并计算正确率。
    • 支持真分数的运算。

    设计思路(同时输出UML类图)(方艺雯)

    无栈

    • 首先要确定生成题目的数量,可以用一个循环,使用Scanner,循环次数由用户输入的数确定。

    • 算式的产生

      • 写一个类实现整数的四则运算:定义两个整数numerator和denominator,利用 int nextInt(4) 方法随机输出0123四个整数,分别代表进行加减乘除运算,然后根据随机输出实现的的运算符进行numerator和denominator的加减乘除运算。
      • 再写一个类实现分数的四则运算:利用书上的第七章RationalNumber和RationalTester类可以实现。
      • 还需要判断正误的操作,并输出成绩和正确率。再写一个类,将运算结果与用户输入的值比较,用if-else语句输出“正确”或“错误”并利用“x++”统计正确题目个数,与题目总数相除即得正确率。
    • 这种方法只是最开始的简单构思,并没有实现要求的所有功能,比如“实现中缀表达式转为后缀表达式并计算”,在老师讲完有关栈的知识后进一步构思。

    有栈

    • 产生式子:首先,让用户选择题目的难度等级,分别对应不同数量的数字进行运算,确定随机产生的整数的个数,定义两个整数numerator和denominator代表分子和分母。分数的产生利用书上第七章RationalNumber类和RationalTest类(也可以单独调用该方法只进行分式的计算),然后调用函数StringTokenizer将分数作为一个String型的,然后同时调用产生分数和整数混合,然后用一个hasMoreTokens方法遍历所有的数,遇到String型的提出,遇到整数型的则将其作为分子,分母为1,然后将这些数存入设立的栈1中(全为分数),然后另外设立一个栈2,利用 int nextInt(4) 方法随机输出0123四个整数(产生的数量为栈1 中数字数量减一),分别代表加减乘除运算符,将数存入栈中,然后先读取栈1的一个数字,然后读取栈2的一个运算符,然后继续读取栈1的,直到读取完所有的数。然后再将这些数输出,此时这些数都是String型的分数,返回出来字符串再用next循环,一个一个分开,分数在中缀转后缀时,2/3为一个整体,转成后缀,声称出来又是一串,分开后next出来一个分数,创建一个对象自定义以/为分隔符分开。得出结果,利用RationalNumber类的reduce和gcd方法化简,结果为真分数的话会保留分数形式,假分数的话结果为整数。
    • 判断正误:将用户输入的数字与计算机的结果比较,输出正误。如果答案是分数,分别比较分子分母来判断。
    • 统计正确率:用一个循环,当判断正误时为正确时,正确题数加一,最后总数与题目数相除可得。

    UML图(谭鑫)

    PSP(王禹涵)

    PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
    Planning 计划 1 1
    Estimate 估计这个任务需要多少时间 20
    Development 开发 2 10
    Analysis 需求分析 (包括学习新技术) 2 2
    Design Spec 生成设计文档 1 1
    Design Review 设计复审 (和同事审核设计文档) 0.5 2
    Coding Standard 代码规范 (为目前的开发制定合适的规范) 0.5 0.5
    Design 具体设计 2
    Coding 具体编码 2
    Code Review 代码复审 1
    Test 测试(自我测试,修改代码,提交修改) 1
    Reporting 报告 2
    Test Report 测试报告 2
    Size Measurement 计算工作量 1
    Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 1

    代码规范(王禹涵)

    • 按照IDEA的格式规范,默认缩进格式为4空格,用Tab键缩进。
    • 代码命名简洁易懂,包含必要信息有助于理解代码。

    问题

    • 问题一:刚开始的时候不知道如何进行复杂的运算,所以只想到了没有栈的方法。
    • 问题一解决:在老师讲解完有关栈的使用之后,通过实现了中缀表达式转为后缀表达式并计算。
    • 问题二:如何让分数参与中缀后缀表达式的计算,而不被直接当做除法计算。
    • 问题二解决:这个问题我们小组自己讨论的是利用书上的RationalNumber两个类作为一部分,与前缀后缀表达式的计算分离开,作为单独的计算分数的一部分,但这与实验要求不符,在询问了助教后,他告诉我们一个StringTokenizer方法,可以用自定义字符串作为标记,这样可以让除法的符号为“%”,分式为“/”来区分,分别提取分子分母,使所有的整数也作为分母为1的分数来运算,最后再加以转换。

    结对编程的好丽友

    团队感受

    我们团队中,我负责写需求分析和设计思路,谭鑫负责做UML类图,王禹涵负责做PSP图和确定代码规范。这些是第一周每个人大致的分工,每个人的负责部分都有跟队员讨论过,比如我负责写的设计思路,是在大家一起讨论寻找不合适的地方修改,是在老师和助教的讲解之后再次修改过的。总的来说,团队意见基本一致,并能合理的解决队员提出的意见,所以团队合作还是很高效的。

    参考

  • 相关阅读:
    报错:java.lang.IllegalStateException
    Eclipse中修改SVN用户名和密码方法
    部署服务器项目报错
    mybatis的双数据源创建
    SVN改地址eclipse怎么同步
    java中文乱码问题解决
    python3 内置函数
    python 生成器generator
    python 理解高阶函数
    python3 装饰器
  • 原文地址:https://www.cnblogs.com/YiYiYi/p/8975687.html
Copyright © 2020-2023  润新知