简单四则运算的实现报告
Posted 张林1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单四则运算的实现报告相关的知识,希望对你有一定的参考价值。
仓库地址:https://git.coding.net/DouPIyo/SimpleMath.git
需求分析
基础需求:
输入参数n,生成n个四则运算至命令行窗口,结果输出至文件。
其中,参数n为整数,运算符不少于两个不得大于五个,运算过程整体不可出现负数和非整数,输出文件名为“result.txt”(仅包含学号以及正确答案)。
高级需求:
支持括号运算,支持真分数运算。
其中,只能出现正整数,真分数,结果为最简形式。
设计思路及功能设计
首设计两个函数,分被用来生成三个1-100随机的整数和两个运算符
而后在主函数中通过for循环不断生成随机数,运算符号病判断算式是否符合要求(通过16个if—else选择语句完成),将符合条件的算法式及其结果保留下来,直至达到需求数N。将式子和结果分别输出至控制台和result.txt中。
高级需求:未完成
代码展示
生成随机的三个数用于参加计算
public static int[] suijishu () { int c,d,e; c = new Random().nextInt(100) +1; d = new Random().nextInt(100) +1; e = new Random().nextInt(100) +1; int [] suijishu1 = {c,d,e}; return suijishu1; }
生成两位运算符号
public static int[] suijiyunsuan () { int rand,rand1,index,index1; int [] arr = {1,2,3,4};//1,2,3,4分别代表加,减,乘,除 index=(int)(Math.random()*arr.length); rand = arr[index]; index1 = (int)(Math.random()*arr.length); rand1 = arr[index1]; int[]suijiyunsuan1= {rand,rand1}; return suijiyunsuan1; }
循环选择算法
for(a=1;b<n;) { int demo[] =ab.suijishu(); int demo1[] =ab.suijiyunsuan(); if(demo1[0] == 1&& demo1[1] ==1) { System.out.println(demo[0]+"+"+demo[1]+"+"+demo[2]+"="); result[b] = demo[0]+demo[1]+demo[2]; b=b+1; } else { if(demo1[0] == 1&& demo1[1] == 2) { if(demo[0]+demo[1]-demo[2]>=0) { System.out.println(demo[0]+"+"+demo[1]+"-"+demo[2]+"="); result[b] = demo[0]+demo[1]-demo[2]; b=b+1; } } else { if(demo1[0] == 1&& demo1[1] == 3) { System.out.println(demo[0]+"+"+demo[1]+"*"+demo[2]+"="); result[b] = demo[0]+(demo[1]*demo[2]); b=b+1; } else { if(demo1[0] == 1&& demo1[1] == 4) { if(demo[1]%demo[2] ==0) { System.out.println(demo[0]+"+"+demo[1]+"/"+demo[2]+"="); result[b] = demo[0]+(demo[1]/demo[2]); b=b+1; } } else { if(demo1[0] == 2&& demo1[1] == 1) { if(demo[0]-demo[1]>=0) System.out.println(demo[0]+"-"+demo[1]+"+"+demo[2]+"="); result[b] = demo[0]-demo[1]+demo[2]; b=b+1; } else { if(demo1[0] == 2&& demo1[1] == 2) { if(demo[0]-demo[1]>=0 && demo[0]-demo[1]-demo[2]>=0) System.out.println(demo[0]+"-"+demo[1]+"-"+demo[2]+"="); result[b] = demo[0]-demo[1]-demo[2]; b=b+1; } else { if(demo1[0] == 1&& demo1[1] == 3) { System.out.println(demo[0]+"+"+demo[1]+"*"+demo[2]+"="); result[b] = demo[0]+(demo[1]*demo[2]); b=b+1; } else { if(demo1[0] == 2&& demo1[1] == 3) { if(demo[0]-(demo[1]*demo[2])>=0) {System.out.println(demo[0]+"-"+demo[1]+"*"+demo[2]+"="); result[b] = demo[0]-(demo[1]*demo[2]); b=b+1;} } else if(demo1[0] == 2&& demo1[1] == 4) { if(demo[0]-(demo[1]/demo[2]) >=0 && demo[1]%demo[2] == 0) b=b+1; System.out.println(demo[0]+"-"+demo[1]+"/"+demo[2]+"="); result[b] = demo[0]-(demo[1]/demo[2]); b=b+1; } else { if(demo1[0] == 3&& demo1[1] == 1) { System.out.println(demo[0]+"*"+demo[1]+"+"+demo[2]+"="); result[b] = demo[0]*demo[1]+demo[2]; b=b+1; } else { if(demo1[0] == 3&& demo1[1] == 2) { if(demo[0]*demo[1]-demo[2]>=0) System.out.println(demo[0]+"*"+demo[1]+"-"+demo[2]+"="); result[b] = demo[0]*demo[1]-demo[2]; b=b+1; } else { if(demo1[0] == 3&& demo1[1] == 3) { System.out.println(demo[0]+"*"+demo[1]+"*"+demo[2]+"="); result[b] = demo[0]*demo[1]*demo[2]; b=b+1; } else { if(demo1[0] == 3&& demo1[1] == 4) { if(demo[0]*demo[1]%demo[2] == 0) System.out.println(demo[0]+"*"+demo[1]+"/"+demo[2]+"="); result[b] = demo[0]*demo[1]/demo[2]; b=b+1; } else { if(demo1[0] == 4&& demo1[1] == 1) { if(demo[0]%demo[1] == 0) {System.out.println(demo[0]+"/"+demo[1]+"+"+demo[2]+"="); result[b] = demo[0]/demo[1]+demo[2]; b=b+1;} } else { if(demo1[0] == 4&& demo1[1] == 2) { if(demo[0]%demo[1] == 0 &&demo[0]/demo[1]-demo[2]>=0) {System.out.println(demo[0]+"/"+demo[1]+"-"+demo[2]+"="); result[b] = demo[0]/demo[1]-demo[2]; b=b+1;} } else { if(demo1[0] == 4&& demo1[1] == 3) { if(demo[0]%demo[1] == 0) {System.out.println(demo[0]+"/"+demo[1]+"*"+demo[2]+"="); result[b] = demo[0]/demo[1]*demo[2]; b=b+1;} } else { if(demo[0]%demo[1] == 0 && demo[0]/demo[1]%demo[2] == 0) {System.out.println(demo[0]+"/"+demo[1]+"/"+demo[2]+"="); result[b] = demo[0]/demo[1]/demo[2]; b=b+1;} } } } } } } } } } } } } } } } } }
测试运行
反思
首先在思考这个问题如何解决时,并不细致,以为很好解决,事实情况因为自己想当然而重新改了很多次。
其次,编程时并无太多的大局观念,而是想到哪里就写什么,而后来发现自己的这个方法在主方法里使用并不完美,或者忘记了某个很重要的问题。比如刚开始什么都没干就先写了分数计算和化简的方法,最后自己因为需要一改再改,拖着拖着没时间加入完美了(差点交不上去了),又如算法极其粗糙。啊哈哈
九思而后动,诚不欺我也。引以为戒
七、PSP展示
PSP |
任务内容 |
计划共完成需要的时间(min) |
实际完成需要的时间(min) |
Planning |
计划 |
40 |
30 |
· Estimate |
· 估计这个任务需要多少时间,并规划大致工作步骤 |
40 |
30 |
Development |
开发 |
355 |
495 |
· Analysis |
· 需求分析 (包括学习新技术) |
30 |
40 |
· Design Spec |
· 生成设计文档 |
10 |
5 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
10 |
5 |
· Coding Standard |
· 代码规范 (为目前的开发制定合适的规范) |
5 |
5 |
· Design |
· 具体设计 |
20 |
10 |
· Coding |
· 具体编码 |
240 |
360 |
· Code Review |
· 代码复审 |
30 |
60 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
10 |
10 |
Reporting |
报告 |
40 |
50 |
· Test Report |
· 测试报告 |
20 |
30 |
· Size Measurement |
· 计算工作量 |
10 |
10 |
· Postmortem & Process Improvement Plan |
· 事后总结, 并提出过程改进计划 |
20 | 20 |
以上是关于简单四则运算的实现报告的主要内容,如果未能解决你的问题,请参考以下文章