博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
week_2 四则运算
阅读量:5102 次
发布时间:2019-06-13

本文共 3320 字,大约阅读时间需要 11 分钟。

coding地址: https://git.coding.net/lvgx/week_2.git

一. 需求分析

  1.接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题

  2.每个数字在 0 和 100 之间,运算符在3个到5个之间。

  3.每个练习题至少要包含2种运算符。

  4.所出的练习题在运算过程中不得出现负数与非整数,比如不能出 3÷5+2=2.6,2-5+10=7等算式。

  5.练习题生成好后,将你的学号与生成的n道练习题及其对应的正确答案输出到文件“result.txt”中,不要输出额外信息,文件目录与程序目录一致。

       附加需求(改进部分):

    1.支持有括号的运算式,包括出题与求解正确答案。注意,算式中存在的括号必须大于2个,且不得超过运算符的个数。

    2.扩展程序功能支持真分数的出题与运算(只需要涵盖加减法即可),例如:1/6 + 1/8 + 2/3= 23/24。注意在实现本功能时,需支持运算时分数的自动化简,比如 1/2+1      /6=2/3,而非4/6,且计算过程中与结果都须为真分数

二.功能设计

  实现点击可执行程序,出现提示词“请输入要生成的运算式”,运行结束,显示运算式,且运算式满足题目要求。最后计算结束,可以点击文件“result.txt”,对照答案。

三.设计实现

  设计了三个类

    main:主函数,实现输出运算式,运算的功能

    symbol:随机实现运算符

    randomnumber:随机生成随机数

四.算法详解

  1.生成随机数

    有Math类的random()方法以及Random类生成随机数两种方式,选择了第一种较为熟悉便捷的方法,并将生成随机数的方法装入一个类,便于调用,实现模块化

  2.生成随机符号

    将四种运算符装入一个数组中,通过生成随机数,对应到数组的检索值,并且个数满足设定范围,当几个随机符号一致时,将最后一个重新生成且不同于其他符号,并且覆盖掉最后一个字符,实现生成随机运算符的步骤

  3.生成运算式

    将生成的随机数放在一个数组里,将生成的运算符放在一个数组里,将二者合并,去除逗号括号,输出

  4.获取生成个数N

    通过函数获取输入数字,并判断其是否为正整数,且满足设定范围。

  5.运算式的计算

    通过迭代进行运算符优先级的判定,进行正常的运算

  6.txt文件的生成

五.测试运行

  

六.代码

  

int results;        int n=numberTest();        //生成问题----------------------------------------------------        Result result = new Result();        String[] boxs = new String[n];        for(int j=0; j
resultN = new ArrayList<>(); for (int i = 0; i < nums.length; i++) { resultN.add(nums[i]); } List
resultS = new ArrayList<>(); for (int i = 0; i < sysmbols.length; i++) { resultS.add(sysmbols[i]); } Box box = new Box(resultN,resultS); results = result.getResult(box); if(results > 0 ) { temp[Snum + Nnum] = '='; temp[Snum + Nnum+1] = results; temp[Snum + Nnum+2]= "\r\n"; boxs[j] = Arrays.toString(temp).replace(',', ' ').replace('[', ' ').replace(']', ' ') ; j++; } else continue; //生成完毕-------------------------------------------------------- //输出 result.outQuestion(boxs); System.out.println(Arrays.toString(temp).replace(',', ' ').replace('[', ' ').replace(']', ' '));

 

七.总结

  其实对于java我并不是非常熟悉,可以说非常薄弱了,对于一个程序,我可能有一定的思维,但是因为不熟悉这门语言而不能熟练的运用相关函数,所以觉得这次作业对我来讲比较困难。通过这次作业,我深深的明白自己的代码能力有多薄弱,别人很快能编辑好的函数方法,我却要查询尝试多次才能实现。这促使我对java学习,有了一个微小的提高,因为只有不断应用,才能更加深刻的了解他的含义。所以我个人觉得,通过项目可以较好的促进个人的学习。还有非常感谢课代表张航同学,是他的耐心和帮助,才能使我在规定时间完成作业。故而有些内容是借鉴张航同学的博客http://www.cnblogs.com/zanghh/

  还有我觉得讨论式学习有助于大家共同的提高,就比如说大家交流,互相学习发现还可以通过js成熟的eval函数可以简化运算过程等

八.PSP

  

SP2.1

任务内容

计划共完成需要的时间(h)

实际完成需要的时间(h)

Planning

计划

25

50

·        Estimate

·   估计这个任务需要多少时间,并规划大致工作步骤

25

50

Development

开发

20

45

·        Analysis

·         需求分析 (包括学习新技术)

3

5

·        Design Spec

·         生成设计文档

0

0

·        Design Review

·         设计复审 (和同事审核设计文档)

0

0

·        Coding Standard

·         代码规范 (为目前的开发制定合适的规范)

0

0

·        Design

·         具体设计

3

5

·        Coding

·         具体编码

10

25

·        Code Review

·         代码复审

2

4

·        Test

·         测试(自我测试,修改代码,提交修改)

2

6

Reporting

报告

5

5

·         Test Report

·         测试报告

4

4

·         Size Measurement

·         计算工作量

0.5

0.5

·         Postmortem & Process Improvement Plan

·         事后总结, 并提出过程改进计划

0.5

0.5

九.不足

  通过这次小小的项目,我认识到自己知识储备量的不足,也意识到不动手,只会一些理论的东西,并不能提高自己的能力。我会更加努力,做出更好的程序

转载于:https://www.cnblogs.com/lvgx/p/8645762.html

你可能感兴趣的文章
android dialog使用自定义布局 设置窗体大小位置
查看>>
ionic2+ 基础
查看>>
[leetcode]Minimum Path Sum
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
IO流写出到本地 D盘demoIO.txt 文本中
查看>>
Screening technology proved cost effective deal
查看>>
mysql8.0.13下载与安装图文教程
查看>>
Thrift Expected protocol id ffffff82 but got 0
查看>>
【2.2】创建博客文章模型
查看>>
Kotlin动态图
查看>>
从零开始系列之vue全家桶(1)安装前期准备nodejs+cnpm+webpack+vue-cli+vue-router
查看>>
Jsp抓取页面内容
查看>>
大三上学期软件工程作业之点餐系统(网页版)的一些心得
查看>>
可选参数的函数还可以这样设计!
查看>>
[你必须知道的.NET]第二十一回:认识全面的null
查看>>
Java语言概述
查看>>
关于BOM知识的整理
查看>>
使用word发布博客
查看>>
面向对象的小demo
查看>>
微服务之初了解(一)
查看>>