20165104-Java第一次结对编程练习

Java第一次结对编程练习

  • 学习笔记

  • 中缀表达式转换为后缀表达式

    • 如果遇到数字,我们就直接将其输出。
    • 如果遇到非数字时,若栈为空或者该符号为左括号或者栈顶元素为括号,直接入栈。
    • 如果遇到一个右括号,持续出栈并输出符号,直到栈顶元素为左括号,然后将左括号出栈(注意,左括号只出栈,不输出),右括号不入栈。
    • 如果遇到运算符号且栈非空,查看栈顶元素,如果栈顶元素的运算优先级大于或者等于该运算符号,则持续出栈,直到栈顶元素优先级小于该运算符。最后将该元素入栈。
    • 如果我们读到了输入的末尾,则将栈中所有元素依次弹出。
  • 生成随机数的运用

    • Random ran = new Random();随机数方法创建对象
    • int B = ran.nextInt(2);生成0—1之内的随机数
  • 需求分析

    • 随机生成题目

      • 生成题目数量根据用户需求输入
      • 自动生成小学四则运算题目(加、减、乘、除)
      • 支持整数和真分数
      • 支持多运算符(比如生成包含100个运算符的题目)
    • 统计正确率
    • 能多次生成题目
    • 扩展需求
      • 题目去重
      • 支持多语言
      • 处理生成题目并输出到文件
      • 完成题目后从文件读入并判题
  • 设计思路

    • 实验首先是完成一个计算器的功能,可以实现简单的+、-、*、/运算
    • 实现多运算符,编入四个类分别实现整数运算、真分数运算、判断结果正确并计算正确率
    • 利用JUnit检测非法输入
    • 设计一个主类生成随机数,生成题目,并判断正确率
    • 设计测试类,利用JUnit测试整数类与分数类的四则运算

uml图:

核心代码及注释

public class Calculate {
    public static void main(String[] args) {
        NumberFormat number = NumberFormat.getPercentInstance();
        Random ran = new Random();
        Scanner scan = new Scanner(System.in);
        while (true) {
            System.out.print("请输入您所需要生成的题目数量:");
            int A = scan.nextInt();                        //A:题目数量
            for (int i = 0; i < A; i++) {
                int B = ran.nextInt(2);                //生成随机数0/1,随机挑选整数或分数运算
                int C = ran.nextInt(4);                //生成随机数0-3,随机挑选4种运算符
                IntNumber in1 = IntNumber.obj();               //整数运算
                IntNumber in2 = IntNumber.obj();
                Fraction score1 = Fraction.obj();              //分数运算
                Fraction score2 = Fraction.obj();
                if (B == 0) {
                    switch (C) {                                //整数加减乘除运算
                        case 0:
                            int num = in1.add(in2);
                            String num1 = "" + num;
                            int n = scan.nextInt();
                            Judgement.judge(n == num, num1);

测试代码

运行结果截图

结对伙伴评价

讲道理,两个菜鸡,这种难度的编程题确实让我们焦头烂额....

BUT

日子还得照样过,代码还得照样敲,从之前一个人问变成现在两个人一起向同学请教学习,说实话,确实两个人一起问,不懂得互相交流,学起来快乐一点吧。谢谢我的搭档

原文地址:https://www.cnblogs.com/20165104mfb/p/8849731.html

时间: 2024-08-04 13:44:43

20165104-Java第一次结对编程练习的相关文章

第一次结对编程

经过几周的软件工程的学习,开始了第一次结对编程的项目,这让我在知道队友之前心里很是忐忑,我先来说一说原因吧.因为我对编程基础不是很好,我就在想给我分配一个大神,就会感觉压力真的好大,如果给我分配一个比我还不行的那我们不就完蛋了.之后看到老师给我分配的是璐姐,或多或少还是有压力的,但是在团队合作的过程当中发现我的顾虑是多余的.在我遇到问题的时候,璐姐还是会抽出自己的时间给我讲一些有关题目的方法,非常仔细认真,我也知道她要考研,能抽出时间来给我讲真的很感动.真心是一个中国好队友.在编程的过程中我们是

ASE 第一次结对编程

问题定义 黄金点游戏源于经济学家Richar Thaler构思的在1997年伦敦金融时报进行了一次公开竞猜活动,该游戏有着一些很有意思的性质,因此老师将其作为第一次结对编程的题目. 问题定义 在黄金点游戏中,假设有N个玩家,游戏规则为,每人写一个或两个0~100之间的有理数 (不包括0或100),提交给服务器,服务器在当前回合结束时算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的玩家得到N分,离G最远的玩家得到-2分,其他玩家得0分.只有一

ASE高级软件工程 第一次结对编程

问题定义 问题的定义 ? 在邹欣老师的博客有游戏介绍:创新的时机 – 黄金点游戏 ? N个玩家,每人写一个或两个0~100之间的有理数 (不包括0或100),提交给服务器,服务器在当前回合结束时算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的玩家得到N分,离G最远的玩家得到-2分,其他玩家得0分.只有一个玩家参与时不得分. 问题的难点 很难知道其他人的策略,只能通过黄金点的历史值进行一定的估计,如何利用信息是一个难点. 首先从游戏规则上来看

软件工程(2018)结对编程第一次作业

第一次结对编程作业 代码审查表 功能模块名称 表达式的括号匹配 审查人 常远 审查日期 2018.4.4 代码名称 表达式的括号匹配 代码作者 郭靖 文件结构 重要性       审查项 结论                  头文件和定义文件的名称是否合理? 是 头文件和定义文件的目录结构是否合理? 是 版权和版本声明是否完整? 否 重要 头文件是否使用了 ifndef/define/endif 预处理块? 是 头文件中是否只存放"声明"而不存放"定义" 是 程序

结对编程项目(除附加题)开发过程

结对编程项目(除附加题)开发过程 结对同伴:李云涛 一.照片 结对同伴在家,等回校后补上. 二.结对编程评价 优点: 1.两个人的编程思想.算法.代码风格可以互相借鉴和学习,对于两人的编程水平的提高都很有帮助. 2.两个人可以分工写不同的相对独立的模块,加快开发的进度. 3.自己程序的bug可能自己怎么找都找不到,而自己的同伴就能很快找到. 缺点: 有些工作必须得两人在一起才能进行,而两人都空闲的时间不是太多,很多时候需要通过线上进行交流,导致工作被耽搁. 我自己的优点:做事认真.有恒心.有学习

结对作业——四则运算 Part3. 对于结对编程的总结与思考

结对作业--四则运算 Part3. 对于结对编程的总结与思考 PB15061303 刘梓轩PB16061489 艾寅中 GITHUB 地址 戳这里 目录 Part 1. Core代码编写部分 Part 2. 封装与对接相关问题 Part 3. 对于结对编程的总结与思考 关于结对 View:(From 艾中) 不得不说,结对编程给笔者带来了一次全新的编程体验.就领航员与驾驶员的分工而言,刘承担了生成和计算的大部分任务,笔者(艾)负责了显示和输出部分的函数. 首先我作为领航员的时候,实际上是有点懵的

pair work结对编程(张艺 杨伊)

一.结对编程人员: 张艺(学号后三位:185) 杨伊(学号后三位:151) 二.这是我们工作的样子:(图片) 三.结对编程优缺点:  优点:  1.结对编程时间紧密,在一定程度上可以督促双方学习,提高效率. 2.Coder在coding过程中会遇到一些细小的问题,而reviewer可以及时指出错误,并给予解决方案进行讨论.  3.遇到问题时,两个人一起讨论,并补充对方没有想到的地方,是完善程序最好的方式.  缺点:  在编程过程中,很长时间是coder在coding的过程中想思路,大概这也是每个

结对编程一二事

一 结队编程过程 作为一次作业,我们进行了这次结对编程.这是我们第一次进行结队编程,感觉还是比较特别的. 这次结队编程的目的是完成微信抢票系统中的查票功能,由张诗文主写,我在旁边进行辅助和帮忙,也就是在旁边协助张诗文一起完成coding.整个过程还是比较流畅的,由于对项目的了解,加之两人之间相互帮助,当他思维阻塞时,我会帮助他疏导思想,当他出现bug时,我也能及时发现.最重要的是这个过程中,他会一直与我进行交流,这就相当于用两人之力共同完成一项任务. 二 遇到的问题 由于是第一次结对编程,而且还

第三次作业结对编程

一.结对编程成员 1.领航员:闵际达 2.驾驶员:郦铸辉 二.黄金点游戏游戏规则 N个同学(N通常大于10),每人写一个0~100之间的有理数 (不包括0或100),交给裁判,裁判算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值.提交的数字最靠近G(取绝对值)的同学得到N分,离G最远的同学得到-2分,其他同学得0分.玩了几天以后,大家发现了一些很有意思的现象,比如黄金点在逐渐地往下移动. 三.代码上传 代码已上传至Coding.net,地址为:https://coding.