java四则运算随机产生式
- 为了让小学生得到充分锻炼,每个练习题至少要包含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