java四则运算随机产生式
- ,运算符在3个到5个之间。
- 为了让小学生得到充分锻炼,每个练习题至少要包含2种运算符。同时,由于小学生没有分数与负数的概念,你所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3/5+2=2.6,2-5+10=7等算式。
- 文件目录与程序目录一致。
- 当程序接收的参数为4时,以下为输出文件示例。
一、需求分析
- 程序接受一个输入参数n
- 随机产生n道四则运算题
- 运算数要求为:0和100之间
- 运算符要求为:3到5个之间
- 每个四则运算式中不能出现负数与小数
- 将最终产生的结果存储到txt文件中
二、功能设计
- 程序接受一个随机数number(3=<number<=5),随机产生number运算数与运算符。
- 程序由接受的n确定产生的运算式数量
- 程序将接受的运算数与运算符随机组合产生运算式
- 输出结果并将其存储到result.txt文件中
三、设计实现
- 编写程序,接受一个数N,确定产生运算式的数量
- 产生随机数number(3到5之间),产生运算数与运算符
- 随机组合运算式与运算符,产生运算式
- 判断运算式是否合法,若不合法,将其进行修改
- 打印输出结果至result.txt文件
四、测试运行
窗口运行结果:
测试结果存储至result.txt文件中:
五、核心代码
1 //存储运算符2 for(int j=0;j<arr_str.length;j++) {
3 if(arr_str[j]=='+'||arr_str[j]=='-'||arr_str[j]=='*'||arr_str[j]=='/') {
4 arrString=String.valueOf(arr_str[j]);
5 arr_str[j]=',';
6 arrslist1.add(arrString);
7 }
8 }
9 //存储运算数
10 String s = new String(arr_str);
11 String[] ss = s.split(",");
12 for(int k=0;k<ss.length;k++) {
13 arrslist2.add(ss[k]);
14 }
15 //生成运算式
16 String[] arrs1 = arrslist1.toArray(new String[arrslist1.size()]);//运算符
17 String[] arrs2 = arrslist2.toArray(new String[arrslist2.size()]);//运算数
18
19 for(int m=0;m<arrs1.length;m++){
20 arrslist.add(arrs2[m]);//运算数
21 arrslist.add(arrs1[m]);//运算符
22 }
23 arrslist.add(arrs2[arrs2.length-1]);
24 String[] arrs = arrslist.toArray(new String[arrslist2.size()]);//运算式
//存储运算式//封装目的地
public static void filewriter(ArrayList<String> arithList) throws IOException {
//封装存储位置
BufferedWriter BufferedWriterbw = new BufferedWriter(new FileWriter("result.txt"));
BufferedWriterbw.write("201571030139");
BufferedWriterbw.newLine();
for(String s : arithList){
//写数据
try {
BufferedWriterbw.write(s+"="+js.eval(s));
} catch (ScriptException e) {
e.printStackTrace();
}
BufferedWriterbw.newLine();
BufferedWriterbw.flush();
}
}
//判断是否产生负数与小数public static void check_arith(String arr[]){
for(int i=0;i<arr.length;i++){
//判断是否产生负数
if(arr[i].contains("-")){
if(Integer.valueOf(arr[i-1])<Integer.valueOf(arr[i+1])){
arr[i]="+";
}
}
//判断是否产生小数
if(arr[i].contains("/")){
int a = Integer.valueOf(arr[i-1]);
int b = Integer.valueOf(arr[i+1]);
int x = a%b;
if(x!=0){
arr[i]="+";
}
}
}
}
六、总结
在本次的四则运算程序的设计与编写当中,我严格按照项目设计的一般步骤,有次序的进行程序的设计与编写,比起以前的拿到题目就编写程序的方式,节省了许多时间。再就是说一下本次的程序的难点:在产生运算式后,如何去判断再运算中是否产生了负数与小数,在出现之后如何将其转变的合理。
七、展示PSP
PSP2.1 | 任务内容 | 计划完成需要的时间(min) | 实际完成需要的时间(min) |
Planning | 计划 | 20 | 30 |
· Estimate | · 估计这个任务需要多少时间,并规划大致工作步骤 | 20 | 30 |
Development | 开发 | 131 | 255 |
·· Analysis | 需求分析 (包括学习新技术) | 10 | 10 |
· Design Spec | · 生成设计文档 | 5 | 10 |
· Design Review | · 设计复审 (和同事审核设计文档) | 3 | 6 |
· Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 3 | 4 |
· Design | 具体设计 | 10 | 15 |
· Coding | 具体编码 | 80 | 200 |
· Code Review | · 代码复审 | 10 | 10 |
· Test | · 测试(自我测试,修改代码,提交修改) | 10 | 10 |
Reporting | 报告 | 32 | 52 |
·· Test Report | · 测试报告 | 20 | 40 |
· Size Measurement | 计算工作量 | 2 | 2 |
· Postmortem & Process Improvement Plan | · 事后总结 ,并提出过程改进计划 | 10 | 10 |
Github地址:https://github.com/gzyt/Arithmetic
以上是 java四则运算随机产生式 的全部内容, 来源链接: utcz.com/z/394874.html