项目地址: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的更多相关文章

  1. 分析Linux内核中进程的调度(时间片轮转)-《Linux内核分析》Week2作业

    1.环境的搭建: 这个可以参考孟宁老师的github:mykernel,这里不再进行赘述.主要是就是下载Linux3.9的代码,然后安装孟宁老师编写的patch,最后进行编译. 2.代码的解读 课上的 ...

  2. 代码规范之争——[个人Week2作业]

    这四个问题均是出自 http://goodmath.scientopia.org/2011/07/14/stuff-everyone-should-do-part-2-coding-standards ...

  3. 《Linux内核分析》 week2作业-时间片轮转

    一.基于时间片轮转调度代码的解读 代码结构主要由三个文件组成: 1.mypcb.h 2.myinterrupt.c 3.mymain.c 1.进程控制块(mypcb.h) /* CPU-specifi ...

  4. [Week2 作业] 代码规范之争

    这四个问题均是出自 http://goodmath.scientopia.org/2011/07/14/stuff-everyone-should-do-part-2-coding-standards ...

  5. 集大软件工程15级个人作业Week2

    集大软件工程15级个人作业Week2 快速通读教材<构建之法>,并参照提问模板,提出5个问题. 在每个问题后面,请说明哪一章节的什么内容引起了你的提问,提供一些上下文 列出一些事例或资料, ...

  6. [buaa-SE-2017]个人作业-Week2

    个人作业-Week2 一.代码复审Checklist 1.概要部分 1.1 代码能符合需求和规格说明么? 本次作业的需求可以分成基本的功能实现和大规模数据下程序的健壮性,以及少量的异常处理能力,也就是 ...

  7. 个人作业-week2:关于微软必应词典的案例分析

    第一部分 调研,评测 评测基于微软必应词典Android5.2.2客户端,手机型号为MI NOTE LTE,Android版本为6.0.1. 软件bug:关于这方面,其实有一些疑问.因为相对于市面上其 ...

  8. 个人博客作业week2——代码复审

    1.代码规范 这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 代码规范并不是从官僚制度下产生,它是为了提高项目团队开发效率而产生的一种工具,能够极大的增强代码可读 ...

  9. 团队作业week2

    软件分析和用户需求调查 (2013) 具体内容参看邹欣老师的博客:http://www.cnblogs.com/xinz/p/3308608.html. 作业提交期限:2013年9月25日上课前.

  10. 个人博客作业Week2 是否需要有代码规范

    问题:是否需要有代码规范 对于是否需要有代码规范,请考虑下列论点并反驳/支持: 1.这些规范都是官僚制度下产生的浪费大家的编程时间.影响人们开发效率, 浪费时间的东西. 2.我是个艺术家,手艺人,我有 ...

随机推荐

  1. Qt常用控件

    Qt常用控件 QWidget与QFrame QWidget所有图形控件的基类 QFrame与QWidget的区别 QFrame是基本控件的基类, QWidget是QFrame的基类. 因此QFrame ...

  2. telerik WinForm主题切换

    通过按钮或Form_Load中切换: ThemeResolutionService.ApplicationThemeName = "Windows 7"; //具体的主题名,不同的 ...

  3. QQ开发技术资料集锦

    1.GG2013:可在广域网部署运行的QQ高仿版 http://www.cnblogs.com/justnow/category/503400.html 2. 苏飞博客: C#仿QQ皮肤-皮肤控件窗体 ...

  4. 大数据入门第十天——hadoop高可用HA

    一.HA概述 1.引言 正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制 2.运行机制 实现高可用最关键的是消除单点故障 hadoop-ha严格来说应该分成各个组件的HA机制——H ...

  5. eclipse各种小图标含义

    参考:https://wenku.baidu.com/view/69a0854df7ec4afe04a1df63.html outline:  实心的代表方法  空心的代表属性  绿色的圆表示公有pu ...

  6. JAVA-SPI机制-实现功能的热插拔

    一.序: 开发中经常遇到的一个需求是,处理不同种类的数据,但是完成的功能是相似的,功能随着传入类型的不同而变化 二.方案: 1.定义接口:定义一个接口,编写不同的实现类 (1)使用场景:完成功能相同, ...

  7. 【HNOI2011】卡农

    题面 题解 将无序化为有序,最后答案除以$m!$. 设$f[i]$表示选出了$i$个子集,并且满足所有的限制的方案数. 因为转移困难,所以考虑容斥 限制了每个数的出现次数为偶数,所以如果前$i - 1 ...

  8. Object C学习笔记9-字符串NSMutableString

    NSMutableString类继承自NSString,所以在NSString中的方法在NSMutableString都可以使用. NSMutableString和NSString的区别在于NSMut ...

  9. SQL 上线平台(内含全部完整资料)

    为了让 DBA 从日常繁琐的工作中解放出来,通过 SQL 自助平台,可以让开发自上线,开发提交 SQL 后就会自动执行并返回执行结果,无需 DBA 的再次审核,从而提升上线效率,有利于建立数据库开发规 ...

  10. 10min 手写一个内存监控系统

    本文的目的在于,尽可能用简单的代码,让大家了解内存监控的原理,及思想.更容易去理解Nagios.Zabbix.Ganglia监控原理,文章最后还有视频教程链接哦,从零敲出来的全过程 思路分为下面几块: ...