zoukankan      html  css  js  c++  java
  • 20165201 结对编程练习_四则运算(第一周)

    20165201 结对编程练习_四则运算(第一周)


    1、需求分析

    实现一个命令行程序,要求:

    • 自动生成指定数量的小学四则运算题目(加、减、乘、除)
    • 支持整数
    • 统计正确率

    扩展需求:

    • 支持多运算符(比如生成包含100个运算符的题目)
    • 题目去重
    • 支持真分数
    • 处理生成题目并输出到文件
    • 完成题目后从文件读入并判题

    2、设计思路

      由于我之前自己写过C语言的小学生计算辅助系统,因此我脑中已经有了大体的框架,只需将想法转换为Java语句,但是我的Java的一些语句掌握的并不是很好,所以第一阶段我只能把程序做的简单一点。
      这个程序的核心显然是产生随机数和符号优先级的判定,这一阶段我先做到前者。Java比C语言方便的一点就是,在C语言中,想真正产生随机数往往要用时间作为随机数种子,而Java可以直接调用Random函数,范围可以直接写在后面的括号里。在本程序中,随机数函数不只用来产生要进行运算的数字,还要用来产生随机数进行分支语句的判断,即产生0-3,四个数,来选择产生哪个符号。
      在下一阶段我们要实现带括号的多个符号运算等功能。

    3、实现过程中的关键代码解释

    • 产生两个随机数,有范围限制,小学生做不了太难的题
    Random random = new Random();
    int num_1 = random.nextInt(20);
    int num_2 = random.nextInt(20);
    
    • switch-case分支语句,根据随机情况,调用4种运算
    switch (random.nextInt(4)) {
                    case 0:
                        result=Jisuan.add(num_1,num_2);
                        System.out.println(num_1+" + "+num_2);
                        break;
                    case 1:
                        result=Jisuan.sub(num_1,num_2);
                        System.out.println(num_1+" - "+num_2);
                        break;
                    case 2:
                        result=Jisuan.mul(num_1,num_2);
                        System.out.println(num_1+" * "+num_2);
                        break;
                    case 3:
                        result=Jisuan.div(num_1,num_2);
                        System.out.println(num_1+" / "+num_2);
                        break;
                }
    
    • 如果用户输入的答案是正确的,就输出Right,反之输出Wrong,并给出正确答案~
    System.out.println("请输入你的答案:");
    answer=scanner.nextInt();
    if (answer==result) {
        System.out.println("Right !!!");
        right++;
    } else
          System.out.println("Wrong !!! 
    The correct answer is : " + result);
    
    • 有一种特殊情况,如果用户一开始输入的想要做的题目数量是0的话,直接结束程序!
    if(num==0) {
                System.out.println("答题结束 !!!");
            }
            else{
                System.out.println("答题完毕 !
     你的正确率为 :" + accuracy + "%");
            }  
    

    4、运行过程截图

    5、代码托管地址

    6、遇到的困难及解决方法

    • 问题1:最初生成题目的时候,做了几道都没有出现过除法题,本来我俩都以为只是概率问题,碰巧赶上了而已,然而不论生成多少题,结果还是没有

    • 问题1解决方法:我想到我之前在写C语言的小学生计算辅助系统的时候,生成随机数用的是rand()%n+1,这里的 n 指的就是想要生成的范围,但是它是从0开始的,所以后面要+1 !果然,下图的那个产生随机数的范围果然少写了一点,将3改为4后,问题解决了~

    • 问题2:在进行边界测试的时候,我在输入要做的题目数量处输入了边界值 0 ,结果第一行虽然显示了答题结束,但正确率处出了问题,如下图:

    • 问题2解决方法:我们用if-else条件语句将这种特殊情况单列出来,代码在此:

    if(num==0) {
                System.out.println("答题结束 !!!");
            }
            else{
                System.out.println("答题完毕 !
     你的正确率为 :" + accuracy + "%");
            }
    

    结果如图:

    7、PSP |Personal Software Process Stages)

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

    8、对结对的小伙伴做出评价(重点指出需要改进的地方)

    这次结对学习反映出了很大的问题,最重要的一点就是我们俩的时间经常错开,能坐在一起讨论的机会并不多,也只有晚上。原因是最近的事情太多了,很多事做不完,希望今后事情少的时候能多讨论交流~

    9、结对编程照片

  • 相关阅读:
    mysql-5.7.16-linux-glibc2.5-x86_64精简后的主从配置
    solr安装
    ffmpeg安装
    saltstack之keepalived的安装配置
    saltstack之haproxy的安装配置
    saltstack1
    logstash运输器以及kibana的更多操作
    logstash编写2以及结合kibana使用
    logstash5.x安装及简单运用
    ELK之elasticsearch5.6的安装和head插件的安装
  • 原文地址:https://www.cnblogs.com/cbmwtsl/p/8850163.html
Copyright © 2011-2022 走看看