• 结对编程项目-四则运算 第一周 阶段性总结


    20175227张雪莹 2018-2019-2《Java程序设计》

    结对编程项目-四则运算 第一周 阶段性总结

    需求分析

    • 自动生成小学四则运算题目(加、减、乘、除)
      • 支持整数
      • 支持多运算符(比如生成包含100个运算符的题目)
      • 支持真分数
    • 统计正确率

    设计思路

    • 首先,程序需要读取用户希望做的习题数目,存于后台
    • 其次,程序需要产生1-100随机数字和随机运算符(“+ - * /”)
      • 算式长度要随机
    • 后台要计算产生的随机式子的正确答案并存储
    • 在用户输入数字后,要与正确答案进行比较
      • 若用户做对,则记录正确题数
      • 若用户做错,则输出正确答案
    • 输出用户此次练习的正确率
    • 扩展
      • 产生有无括号的式子
      • 能够计算真分数

    UML类图

    功能截图

    JUnit测试

    r/src/pairwork_1)

    遇到的困难及解决办法

    • 问题1
      • 一开始打算生成一个储存算式的字符串数组,长度用随机数生成,偶数位存数字,奇数位存运算符,然后用中缀表达式转后缀表达式计算正确结果。后来编译程序时,发现提示空指针错误,并且用中缀转后缀计算程序太过冗杂
    • 问题1及解决方法
      • 求助网络后,和结对伙伴发现了一位网友的在链表中调用JavaScript中eval方法可以直接对字符串求值,于是采用该方法
    • 问题2
      • 由于不了解链表真实含义,导致我们在实际编程中总是出现未知错误
    • 问题2及解决方法
      • 于是我们找到另一种方法:
        通过引入下面这几个包
    import javax.script.ScriptEngine;
    import javax.script.ScriptEngineManager;
    import javax.script.ScriptException;
    

    main方法中直接调用eval方法

    • 问题3
      • eval方法不能直接输出算式的值,否则会出现空指针或数据类型错误提示
    • 问题3及解决方法
      • eval值赋给Boolean类型result,存入字符串数组str为如“5+3==7”的逻辑式,直接判断用户输入是否正确;再将eval值赋给输出正确答案字符串数组ca,实现正确答案输出,程序如下:
    String str=ex+"="+"="+ua;                 //将用户答案逻辑式放在字符串str中
    Boolean result =(Boolean)se1.eval(str);      //用eval方法计算用户答案逻辑式
    String ca="="+se2.eval(ex);           //生成correct_answer字符串存正确答案
    
    • 问题4
      • 统计正确题目数count时,无法将countjudgeFormula中返回,count值仍为0
    • 问题4及解决方法
      • 在参考学姐博客后,选择加入如下包:
        import java.text.NumberFormat;
        调用该类中方法getPercentInstance来返回当前默认语言环境的百分比格式,如下:
    NumberFormat num = NumberFormat.getPercentInstance();//调用getPercentInstance方法
    ……
    double T = (double) jud.getTrues()/n;
    System.out.println("正确率为:"+num.format(T));
    

    结对总结

    • 在这周的结对学习中,我和我的结对伙伴通过互相配合、帮助、纠正错误,完成了四则运算的阶段学习任务
    • 在编程过程中,我的伙伴为程序寻找了许多方法,提供了很多方案,比如使用链表引入eval方法;并在程序纠错过程中查出了很多错误并改正;我的伙伴对测试程序有自己的方法,为我们这周的编程项目学习划上了圆满的句点
    • 在此周结对学习中,我学到了很多知识,知道了eval方法这样简单就能实现计算字符串数组中的内容,可以使用NumberFormat类中getPercentInstance方法来返回当前默认语言环境的百分比格式。最终,我们的程序代码行数虽少却实现了程序所要求拥有的功能

    结对学习照片

    PSP

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

    参考资料

  • 相关阅读:
    app测试的一些较为重要的测试点
    adb工作常用命令
    vue中$attrs $listeners你会用吗?
    Vue中组件通信的常用方式
    Vue中watch 的用法
    VUE中使用 async await 将 axios 异步请求同步化处理
    安装spyder记录
    树莓CM3开机连接WIFI
    树莓派搭建seafile服务器备忘
    关于JAVA数据结构_线性表(通过单向链表实现)的学习
  • 原文地址:https://www.cnblogs.com/zxy20175227/p/10648889.html
Copyright © 2020-2023  润新知