week2-作业2
项目地址:https://git.coding.net/Rainoob/calculate.git
·1、需求分析:程序可以根据输入的参数n随机产生n道四则运算计算题,每个数字在0-100之间。运算符在三个至五个之间,不能出现分数和负数。将学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中。使用Java编程
2、功能设计:基本功能:程序可以根据用户输入的参数产生具体的题目数量,程序能自动计算出答案,且输出答案
扩展功能:支持带括号的运算,且能进行真分数运算
3、设计实现:Main类:主类,接收命令行参数并启动程序;file类:File类:主要的功能实现部分。其中的getFile()函数用来生成运算式并生成得到txt文件;Math类的Random()方法生成随机数
4、算法详解:用if语句分别表达参与运算有三个、四个、五个操作数的情况;再通过switch语句,从第一位操作数运算到最后一位操作数。通过eval函数解决运算符优先级问题
int operationnumber = (int) (Math.random() * ) % () + ;
if (operationnumber == ) {
int A = (int) (Math.random() * ) % () + ;
switch (A) {
case :
consequence = a + b;
equation = a + "+" + b;
break;
case :
consequence = a - b;
equation = a + "-" + b;
break;
case :
consequence = a * b;
equation = a + "*" + b;
break;
case :
consequence = a / b;
equation = a + "/" + b;
break;
}
int B = (int) (Math.random() * ) % () + ;
switch (B) {
case :
consequence = consequence + c;
equation = equation + "+" + c;
break;
case :
consequence = consequence - c;
equation = equation + "-" + c;
break;
case :
consequence = consequence * c;
equation = equation + "*" + c;
break;
case :
consequence = consequence / c;
equation = equation + "/" + c;
break;
}
}
5、测试运行:
6、代码展示:
class File {
public void getFile(int n) throws ScriptException, IOException {
ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
java.io.File file = new java.io.File("result.txt");
FileOutputStream fop = new FileOutputStream(file);
if (!file.exists()) {
file.createNewFile();
}
这一段是生成运算结果文件夹的代码
7、总结:因为自己很少写代码,总是遗漏很多东西,也不能完成很多功能。最开始写这个程序的时候,首先想到的是需要使用生成随机数的Math类的Random()方法。看到题目有一个需求是,参与运算的数有三到五个,当时就很懵,觉得自己要写的话应该会写得十分复杂。不仅要考虑运算符的优先级,还要考虑减法时数值的大小先后问题。其实心里是想到肯定可以用if语句或许switch语句简化代码的,但是就是抓不到要点。后来询问了室友的思路,觉得他的这个算法很好。然后就借鉴了他的算法。首先用if语句分别讨论参与运算数的个数问题,然后用选择语句。分别执行第一次,第二次,第三次和第四次运算。然后用eval函数解决运算级优先问题。平时只看看书,很难发现有的问题,多写代码,才能发现更多的问题。以后多注意一下实际操作,而不是纸上谈兵。
week2-作业2的更多相关文章
- 分析Linux内核中进程的调度(时间片轮转)-《Linux内核分析》Week2作业
1.环境的搭建: 这个可以参考孟宁老师的github:mykernel,这里不再进行赘述.主要是就是下载Linux3.9的代码,然后安装孟宁老师编写的patch,最后进行编译. 2.代码的解读 课上的 ...
- 代码规范之争——[个人Week2作业]
这四个问题均是出自 http://goodmath.scientopia.org/2011/07/14/stuff-everyone-should-do-part-2-coding-standards ...
- 《Linux内核分析》 week2作业-时间片轮转
一.基于时间片轮转调度代码的解读 代码结构主要由三个文件组成: 1.mypcb.h 2.myinterrupt.c 3.mymain.c 1.进程控制块(mypcb.h) /* CPU-specifi ...
- [Week2 作业] 代码规范之争
这四个问题均是出自 http://goodmath.scientopia.org/2011/07/14/stuff-everyone-should-do-part-2-coding-standards ...
- 集大软件工程15级个人作业Week2
集大软件工程15级个人作业Week2 快速通读教材<构建之法>,并参照提问模板,提出5个问题. 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文 列出一些事例或资料, ...
- [buaa-SE-2017]个人作业-Week2
个人作业-Week2 一.代码复审Checklist 1.概要部分 1.1 代码能符合需求和规格说明么? 本次作业的需求可以分成基本的功能实现和大规模数据下程序的健壮性,以及少量的异常处理能力,也就是 ...
- 个人作业-week2:关于微软必应词典的案例分析
第一部分 调研,评测 评测基于微软必应词典Android5.2.2客户端,手机型号为MI NOTE LTE,Android版本为6.0.1. 软件bug:关于这方面,其实有一些疑问.因为相对于市面上其 ...
- 个人博客作业week2——代码复审
1.代码规范 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 代码规范并不是从官僚制度下产生,它是为了提高项目团队开发效率而产生的一种工具,能够极大的增强代码可读 ...
- 团队作业week2
软件分析和用户需求调查 (2013) 具体内容参看邹欣老师的博客:http://www.cnblogs.com/xinz/p/3308608.html. 作业提交期限:2013年9月25日上课前.
- 个人博客作业Week2 是否需要有代码规范
问题:是否需要有代码规范 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 2.我是个艺术家,手艺人,我有 ...
随机推荐
- 3.Functions-函数(Dart中文文档)
初次翻译,部分内容并非按字面翻译,是按本人理解进行了内容重组.如有错误望指正. Dart是完全的面向对象的语言,甚至函数也是一个Function类型的对象.这意味着函数可以赋值给变量或者作为函数的参数 ...
- 2017-2018-1 20155214 《信息安全系统设计基础》 第9周课下测试-mypwd
2017-2018-1 20155214 <信息安全系统设计基础> 第9周课下测试-mypwd(深入版) 题目要求: 1 学习pwd命令 2 研究pwd实现需要的系统调用(man -k; ...
- PPAS可以安装分区表
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页 [作者 高健@博客园 luckyjackg ...
- 【转载】COM 组件设计与应用(二)——GUID 和 接口
原文:http://vckbase.com/index.php/wv/1203.html COM 组件设计与应用 系列文章:http://vckbase.com/index.php/piwz?& ...
- 洛咕 P3338 [ZJOI2014]力
好久没写过博客了.. 大力推式子就行了: \(E_i=\sum_{j<i}\frac{q_j}{(i-j)^2}+\sum_{j>i}\frac{q_j}{(j-i)^2}\) 那么要转化 ...
- #6472. 「ICPC World Finals 2017」难以置信的任务 Mission Improbable
可以简化一下问题,假设Patrick把箱子都拿走但是原来有箱子的位置留下一个,现在要放箱子使得每行每列最大值都满足,最少放多少个. 设第\(i\)行的最大值是\(H(i)\),第\(i\)列的是\(W ...
- AgileRepository - 一个基于接口的Repository快速开发库
AgileRepository 这是一个可以帮助你快速开发Repository的lib.有点像SpringData JPA根据方法名.注解来自动生成查询方法的功能. 对于一些简单的查询,只需要定义接口 ...
- Nopcommerce主要用到的技术及特点
很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们 ...
- 读书笔记:《HTML5开发手册》--figure、time、details、mark
这是补充HTML5基础知识的系列内容,其他为: 一.HTML5-- 新的结构元素 二.HTML5-- figure.time.details.mark 三.HTML5-- details活学活用 四. ...
- HT7A6312—— 离线开关电源小功率初级转换开关IC 记录总结
1. 芯片特性 a. 固定60KHz开关频率: b. 宽Vcc输出电压范围:9V - 38V: c. 宽交流输入电压范围:85Vac - 265Vac: d. 电流模式PWM控制: e. 带迟滞的辅助 ...