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.我是个艺术家,手艺人,我有 ...
随机推荐
- Scala_标识符
用于对象,类,变量和方法的名称称为标识符.关键字不能用作标识符,标识符区分大小写. 类名首字母大写 方法名称第一个字母小写 程序文件名应该与对象名称完全匹配 1.字母数字标识符 以字母或下划线开头,后 ...
- BZOJ1068_压缩_KEY
题目传送门 区间DP,设f[i][j][0/1]为i~j区间的压缩情况,1表示在插入了一个M. code: /********************************************* ...
- 【python3】文件格式转换windows转为unix
一.场景 工作需要,有时要将文件上传到 unix 的服务器,希望将文件的格式改为 Unix(LF), 可以通过py脚本来批量处理. 二.代码 import os # 转换文件格式和编码方式 def t ...
- [Deep-Learning-with-Python]神经网络入手学习[上]
神经网络入手[上] [x] 神经网络的核心部分 [x] Keras介绍 [ ] 使用Keras解决简单问题:分类和回归 神经网络剖析 神经网络的训练与下列对象相关: 网络层Layers,网络层结合形成 ...
- Kubernetes学习之路(十八)之认证、授权和准入控制
API Server作为Kubernetes网关,是访问和管理资源对象的唯一入口,其各种集群组件访问资源都需要经过网关才能进行正常访问和管理.每一次的访问请求都需要进行合法性的检验,其中包括身份验证. ...
- Windows:使用Dos命令管理服务(Services)
Windows 服务器系列: Windows:查看IP地址,IP地址对应的机器名,占用的端口,以及占用该端口的应用程 Windows:使用Dos命令管理服务(Services) Windows:任务调 ...
- ruby安装卸载
1.用命令yum install ruby安装,是2.0以下的版本.不建议使用 2.2.2以上 下载地址:https://www.ruby-lang.org/en/news/2018/03/28/r ...
- cookie记住密码/base64加密(js控制)
cookie记住密码/base64加密(js控制) • 配置cookie //设置cookie function setCookie ( name, value, expdays ) { var ex ...
- Qt-网易云音乐界面实现-3 音乐名片模块的实现
这个模块其实我是不知道该叫什么的,暂时就叫做音乐名片模块吧,这可以看到,这个模块简单的显示以下信息. 1. 歌曲名称 2. 歌曲歌唱者 3. 歌曲封面 4. 喜欢歌曲的按钮 5. 分享歌曲的按钮 6. ...
- webpack2.0+ vue2.0
一 webpack 2.0 及用到的插件安装(默认已经有node环境) 1. package.json文件 (插件安装及插件的功能不详解) { "private": true, & ...