20194614+自动生成四则运算题第一版报告
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
基本功能:自动生成四则运算题
扩展功能:快速得出答案;四则运算依据用户的输入得出结论
使用Java实现,软件Eclipse,运用while、for等多种语句
运行结果
生成四则表达式
public HashSet<String> generateArithmetic(){
HashSet<String> arithSet =new HashSet<String>();
while(arithSet.size() < this.n){ //生成指定数量的公式
String arithmetic = "";
int number = this.getRandomNumber(this.m,this.i);
int otherNumber = this.getRandomNumber(this.m,this.i);
arithmetic += this.getNumber(number);
// 生成指定操作数的表达式
for(int i = 1; i < this.o; i++){
arithmetic += " "+ this.getRandomOperator(this.isMultiAnddiv) + " " +this.getNumber(otherNumber);
otherNumber = this.getRandomNumber(this.m,this.i);
}
Object result = this.getComputeReturn(arithmetic); // 计算表达式结果
// 把符合要求的结果存起来
if (Double.parseDouble(result.toString()) < this.r){
arithmetic += " = " + String.format("%.3f",Double.parseDouble(result.toString()));
arithSet.add(arithmetic);
}
}
return arithSet;
}
计算四则表达式的结果
private Object getComputeReturn(String arithmetic){
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine se = manager.getEngineByName("js");
Object result = null;
try {
result = se.eval(arithmetic);
} catch (ScriptException e) {
e.printStackTrace();
}
// System.out.println(result);
return result;
}
为负数加上括号,返回负数带括号的数,整数原样输出
private String getNumber(int number){
if (number > 0){
return number+"";
}else{
return "(" + number +")";
}
}
生成随机操作符号
private String getRandomOperator(boolean isMultiAnddiv){
String [] operator = {"+", "-", "*", "/"};
Random randomOper = new Random();
if (isMultiAnddiv){
return operator[randomOper.nextInt(4)];
}else{
return operator[randomOper.nextInt(2)];
}
}
这次我应该先构成整体框架,勾勒出大体的程序模式再进行程序的复查等,而不是从琐碎的小地方抓起,组装之后思绪繁琐,深刻认识到了这次的弊端,我会继续加油努力哒
psp2.1 | 任务内容 | 计划共完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 60 | 520 |
· Estimate | 估计这个任务需要多少时间,并规划大致工作步骤 | 60 | 520 |
Development | 开发 | 40 | 120 |
·· Analysis | 需求分析 (包括学习新技术) | 10 | 30 |
· Design Spec | · 生成设计文档 | 10 | 40 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 20 |
·Coding | · 具体编码 | 120 | 200 |
·Code Review | · 代码复审 | 10 | 30 |
·Test | · · 测试(自我测试,修改代码,提交修改) | 10 | 20 |
·Reporting | · · 报告 | 10 | 30 |
· Test Report | · · 测试报告 | 10 | 10 |
· Size Measurement | · · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · · 事后总结 ,并提出过程改进计划 | 10 | 10 |