项目地址: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. MongoDB查找条件

    1. 关系运算符 $eq 等于 $lt    小于 $lte 小于等于 $gt   大于 $gte 大于等于 $in   在范围内 //查询名字为“小明”和“小刚”的 $condition = [ ' ...

  2. 托管代码编写mssql存储过程

    参考:http://wenku.it168.com/d_000642903.shtml 打开vs,创建数据库项目,添加新项,选择sql clr c#, 选择存储过程. 样例: [Microsoft.S ...

  3. Linux5下安装MySQL过程记录

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL杂记页     回到顶级页面:PostgreSQL索引页 [作者 高健@博客园  luckyjackgao@gmail. ...

  4. python基础学习2-easygui框架编程

    #!/usr/bin/env python # -*- coding:utf-8 -*- import easygui as g #导入方式一 #导入方式2 #from easygui import ...

  5. 【转载】D3DXMatrixLookAtLH视图变换函数详解

    原文:D3DXMatrixLookAtLH视图变换函数详解 /*D3DXMatrixLookAtLH函数返回的是世界->视图变换矩阵. 视图坐标系和局部坐标系是一样的,都是世界坐标系转换为指定的 ...

  6. 19-[模块]-json/pickle、shelve

    1.序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes (1)把字典保存到文件 data = { 'roles': [ ...

  7. 21-[jQuery]-介绍,引入方式,与js的区别

    1.jQuery介绍 jQury官网:https://jquery.com/ 2.jQuery文件的引入 <!DOCTYPE html> <html lang="en&qu ...

  8. 【HNOI2013】比赛

    题面 题解 \(n \leq 9 \to\)爆搜 对每一场的结果进行搜索,最后进行\(\mathrm{check}\) 然后会发现没有什么分 搜索最重要的就是剪枝 接下来就列出一些剪枝 搜索时,强制每 ...

  9. BZOJ2539 Spoj 10707 Count on a tree II

    题面 题解 因为这道题目我也不太会做,所以借鉴了一下大佬heyujun的博客 如果不强制在线,这道题目是树上莫队练手题 我们知道莫队是离线的,但是万一强制在线就凉凉了 于是我们就需要一些操作:树分块 ...

  10. loj2230 「BJOI2014」大融合

    LCT裸题 我LCT学傻了这题明显可以树剖我不会树剖了 本来的siz是Splay上的子树和,并没有什么用. 所以每个点维护虚子树和和子树和 虚子树和即虚边连接的子树和,且只有在access和link操 ...