项目github地址:https://github.com/narutofk/Test2
一、需求分析
- 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
- 练习题生成好后,将你的学号
- 当程序接收的参数为4时,以下为输出文件示例。
二、功能设计
首先要生成随机数,还要生成随机符号,然后*组合,最后计算出答案即可。能力有限,我的程序中没有判断负数与非整数的部分,我会在后面的时间和同学交流,加以改进。
三、设计实现
程序中只有一个主类,Main.java,四个主要函数,分别是产生随机数的getNumber(),产生随机符号的getOperator(),产生运算式的creatOperation(),以及产生结果的filewriter。
先用Random函数申城随机数,然后把符号,+-*/放进一个swith函数中,然后随机取出随机个,然后使用ScriptEngine 解析脚本,产生运算式,关于这部分的方法,可参考http://blog.csdn.net/u014792352/article/details/74644791 这篇博文,里面详细解释了,我这就不加以赘述。至于生成运算式之后的计算问题,就很简单了。调用ScriptEngine脚本引擎中的eval方法即可。
四、测试运行
五、核心代码部分
1.产生随机运算符以及存储
public static char getOperator(){ char operator = 0; Random op = new Random(); int i = op.nextInt(4); switch(i){ case 0: operator = '+'; break; case 1: operator = '-'; break; case 2: operator = '*'; break; case 3: operator = '/'; break; } return operator; }
for(int j=0;j<arr_str.length;j++) { if(arr_str[j]=='+'||arr_str[j]=='-'||arr_str[j]=='*'||arr_str[j]=='/') { arrString=String.valueOf(arr_str[j]); arr_str[j]=','; arrslist1.add(arrString); } }
2.调用ScriptEngine脚本
static ScriptEngine engine = new ScriptEngineManager().getEngineByName("JavaScript"); for(String arr: Operation){ try { System.out.println(arr+"="+engine.eval(arr)); } catch (ScriptException e) { e.printStackTrace(); } }
六、总结
设计程序思路清晰,为了得出四则运算式,肯定要随机数字,随机运算符,然后加以组合,并且计算出来,在写代码时,按照这个思路,一块一块写下去即可。计算的部分,一开始想用逆波兰式,但是实在是能力有限,有心而力不足,没能写出来,最后在同学的帮助下,了解并学习了ScriptEngine脚本引擎,完成了本次任务。
七、展示PSP
PSP2.1 |
任务内容 |
计划完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
5 |
3 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
5 |
3 |
Development |
开发 |
100 |
180 |
·· Analysis |
需求分析 (包括学习新技术) |
2 |
0 |
· Design Spec |
· 生成设计文档 |
2 |
3 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
2 |
3 |
· Coding Standard |
代码规范 (为目前的开发制定合适的规范) |
4 |
4 |
· Design |
具体设计 |
10 |
20 |
· Coding |
具体编码 |
60 |
120 |
· Code Review |
· 代码复审 |
5 |
10 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
15 |
20 |
Reporting |
报告 |
20 |
30 |
·· Test Report |
· 测试报告 |
2 |
5 |
· Size Measurement |
计算工作量 |
2 |
5 |
· Postmortem & Process Improvement Plan |
· 事后总结 ,并提出过程改进计划 |
16 |
20 |