https://github.com/jinxiaohang/Operation/tree/test01

  对于任务2的代码进行优化修改感觉很麻烦,所以直接选择重写代码完成任务四,

  任务四很早就发布了,自己也很早开始动手,只是一直拖着,,不是懒,要做的事很多,也不想走在队伍的太前面,

所以跟着自己的节奏慢慢来。

  对于这次的多运算符的四则运算,开学的时候早就有想过,而且把代码也写了一下,只不过是c++形式的,

想到栈,这种先进后出的数据结构。java有提供给我们这样的集合框架。所以用着很方便,但是在使用的过

程中很是遇到一些小问题(读栈顶时若栈空,会抛出异常,所以在读栈顶时要先判空),自己也顺利的解决了,

不知道这样的处理是不是有问题,还是说可以避免的。

  这学期自己也选了软件工程这节课,上了有关软件工程的东西,深有感触,敲代码只是其中的10%-20%,是其中一

小部分,然而做一款软件(产品)也不是随随便便的事,所以我试着模仿软件工程的思路来做这款小程序。

  需求分析;

  1. 生成的算式中的运算数必须为自然数(0、1、2……)或真分数(1/2、4/5 等分子比分母小的分数)。
  2. 乘号用 × 表示;除号用 ÷ 表示,代替 / 号。
  3. 算式中,运算符与运算数之间必须加空格,但若是分数形式,则不需要,如:3 + 1/2 。
  4. 能随机生成 2~3 个运算符的算式,如:2 + 3 * 4 ,注意此算式的答案也必须按照运算优先级进行计算。
  5. 能生成带括号的算式,如 (2 + 3) * 4 和 3 / (4 + 2)。括号的运算优先级要高于加减乘除。
  6. 在用户输入答案后,除显示对错之外,还需要显示此题的正确答案。

大概就是老师要求的这些。但是这是个小程序忽略了很多软件工程流程中的许多细节。不能跟着一步步来。

  功能1,2,3,6简单,在任务2的基础上可以完成。4,5需要自己重新设计。对于功能4,选择栈。

运算优先级问题,栈可以解决,主要思路,中缀表达式转后缀表达式,然后根据后缀表达式算结果。根据用户的输入判断对错

在判断用户输入对错的问题上在任务2我处理的不太好,思路过于复杂,代码冗杂。于是我思考用户输入代码的特点,以及在任

务2遇到的bug,首先我将用户输入分为2类,1:带有字母的,2:不带字母的,

  在第一类中,定义一个特殊单词,作为退出程序用,其余情况视为错误输入,

  在第二类中。我接触了正则表达式(想要学习爬虫),所以根据根据特殊字符,分为(小数。分数。错误输入)和整数两类。

  然后根据自己的特点进行处理操作,对于后缀表达式计算的结果以小数形式保存,在答案对比上可能存在一定的误差,但在测试时情况良好。

  但是对于这样的操作还是有一些问题,所以对于小数,分数的判断加以优化。可是效果不好,感觉代码冗长。

  今天2017/3/23和昨天,在想要学习爬虫的强大欲望下,学了一些网络编程和正则表达式的知识,想到了,接触了在网页上爬取邮箱,手机

号码,想到自己也可以定义小数,分数,整数的正则表达式,筛选出我要的答案进行处理,不要的都视为错误输入,很快就解决了。相对而言,代码简洁不少。

功能5,我选择设置成3种题型的形式,不带括号整数的四则混合运算,带括号的整数四则混合运算,带分数的四则混合运算

  一个函数能生成三种情况或更多,我现在的想法还没想到,所以选择三个函数来完成。

在开始改进程序之前,需要先通过 Git (或其他的 GUI 工具)创建一个新的分支(Branch)。

对于这个问题,不想多说,推荐一个教程,我感觉不错,内容情况很全,关于在IDEA中实战Git http://blog.csdn.net/autfish/article/details/52513465

这次没有过多的参考老师提供的资料,都是根据自己的想法,缺什么找什么,不会什么学什么。

对于java学习还是有些迷茫,不知道下一步干嘛。但还是把基础打扎实了,这样心里靠谱。

附一段这段时间学习java的感受:

附上一张我总结的java类的层次图,很模糊,因为它比较大想看到全图就要缩小,我相信以后还会更大。

这是我前几个星期开始总结的,每次把新学到的或者接触的类,记录下来知道他在哪、他怎么用、他的”父亲“

是谁,有人会问这不是jdk api上都有的,傻不傻,干嘛浪费时间记这个,我想说jdk api是在的,但是这不是

我的东西,不是我脑子里的东西,也许这只是消除我迷茫的一个方式,手段,,但是这样的学习让我觉得很充实,

知道自己学到了哪些,掌握了哪些,知识增长了多少,jdk api不是java学习的全部,但是我觉得是他是学习

java的基础。学习了他,让我感觉迈进了java的大门。

学习编程,不仅让我学到了知识,还让我懂得做人,编程不是一件枯燥无味的事,学习编程不仅是学习他的表象

还要懂得他的内在,学习编程“内在”的比学习“编程表象”让我更快乐。

最新文章

  1. mysql单列去重复group by分组取每组前几条记录加order by排序
  2. WPF CheckBox 自定义样式
  3. lnmp平台菜鸟入门级笔记
  4. strut2的拦截器之对request和session的封装
  5. ClassLoader 详解及用途(写的不错)
  6. IE下无法保存Cookie和Session问题
  7. php会话(session)实现原理
  8. [TJOI 2017]异或和
  9. 对中断的理解handle_level_irq【原创】
  10. Win10中Vue.js的安装和项目搭建
  11. Gym - 101350F Monkeying Around(线段树+树状数组)
  12. 微信硬件平台(一) 公众号 ESP8266 Arduino LED
  13. 使用hibernate造成的MySql 8小时问题解决方案
  14. [转]Visual Studio 2015源文件编码问题(936)
  15. 安装httpd服务配置
  16. c#的as,is 运算符
  17. SpringMVC框架05——拦截器
  18. Eigen教程(8)
  19. 怎么才能将文件流或者图片转化为base64,传到前台展示
  20. PAT乙级1008

热门文章

  1. 【Java】Java_09 类型转换
  2. The user specified as a definer ('root'@'%') does not exist
  3. EChart-Timeline
  4. 通过Spring使用远程访问和web服务
  5. Android自定义圆形进度条,完成类似LOFTER效果
  6. iOS:一个Cell中设置另外一个Cell中的button
  7. oracle 11g 中 (oracle 10g) crsctl 的 替换命令
  8. CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\
  9. mybatis学习笔记(14)-查询缓存之中的一个级缓存
  10. nginx configure参数