20175227张雪莹 2018-2019-2《Java程序设计》
结对编程项目-四则运算 第一周 阶段性总结
需求分析
- 自动生成小学四则运算题目(加、减、乘、除)
- 支持整数
- 支持多运算符(比如生成包含100个运算符的题目)
- 支持真分数
- 统计正确率
设计思路
- 首先,程序需要读取用户希望做的习题数目,存于后台
- 其次,程序需要产生1-100随机数字和随机运算符(“+ - * /”)
- 算式长度要随机
- 后台要计算产生的随机式子的正确答案并存储
- 在用户输入数字后,要与正确答案进行比较
- 若用户做对,则记录正确题数
- 若用户做错,则输出正确答案
- 输出用户此次练习的正确率
- 扩展
- 产生有无括号的式子
- 能够计算真分数
UML类图
功能截图
JUnit测试
r/src/pairwork_1)
遇到的困难及解决办法
- 问题1
- 一开始打算生成一个储存算式的字符串数组,长度用随机数生成,偶数位存数字,奇数位存运算符,然后用中缀表达式转后缀表达式计算正确结果。后来编译程序时,发现提示空指针错误,并且用中缀转后缀计算程序太过冗杂
- 问题1及解决方法
- 求助网络后,和结对伙伴发现了一位网友的在链表中调用JavaScript中
eval
方法可以直接对字符串求值,于是采用该方法
- 求助网络后,和结对伙伴发现了一位网友的在链表中调用JavaScript中
- 问题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
时,无法将count
从judgeFormula
中返回,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 |