20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

时间:2022-05-09 03:36:20

20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

需求分析

这次的结对作业是要求我们利用栈来设计一个计算器。

  • 自动生成四则运算的题目(加、减、乘、除)
  • 需要实现计算结果的输出
  • 将正确的计算结果与用户输入的计算结果进行比较得出最终的正确率
  • 因为现在编写的程序还有很多问题,我以为后续还可以完善一下程序,可以加入括号,可以比较正确与否

设计思路

现在得到的程序还是存在一定的问题,比如只能输出正确的结果但还没有办法实现将正确的计算结果和用户输入进行比较。

1. 首先我们需要编写随机生成数字和随机生成符号的代码,把他们编写好后保存
2. 我们需要利用之前编写好的随机生成数字和符号的代码来组成一道题,然后根据用户的输入需要生成多道题
3. 利用在博客中提到的栈的计算方法设计栈的计算,遇到数字直接输出,遇到符号看情况压栈或输出。
4. 经过上一步的操作,我们把中缀表达式转化成后缀表达式之后就可以计算了。
5. 利用逆波兰表达式求值,并返回得到的值
6. 读取用户经过计算后输入的值,将用户输入的值与正确的值进行比较,正确则正确题数加一,错误则不变。最终返回用户答题的正确率。

在实验开始的时候,我们决定先实现一个小目标,就是编写一个两个一百以内数字的四则运算计算器,可以自动出题、检验。

代码和运行截图如下

20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

20175324王陈峤宇 2018-2019-2《Java程序设计》结对编程项目-四则运算 第一周 阶段性总结

实现过程中的关键代码解释

这是在编写完成生成随机数的代码之后关于自动产生问题的程序,在程序中首先我们先创建对象,然后先生成一个随机数作为一道题中一共有几个数字的情况,将这个随机数带入for循环的终结语句中。在for循环中,我们在构建一道题目。首先是第一次循环,第一次循环带入一个随机数以及一个符号,按顺序依次构成一道题目。不过我们需要在循环最后的外面加上一个随机数,这样才能构成一道完整的题目。

运行过程截图

这是第一个,这里生成的随机数每道题只有两个。存在很大的问题,然后经过一些改进。

这是第二个,编写的这个程序到现在还是存在很多问题。不过这次生成一道题数字的个数完全随机,这个是在之前程序上进步的。我们有了用户的输入,但是我们还没有实现将用户的输入与我们正确的值进行比较的过程。这个问题还有待解决。
代码中的运算还没有括号的情况这些问题还有待改进。

代码托管地址

码云链接:https://gitee.com/H2742/HelloWorld

遇到的困难及解决方法

问题一:刚刚开始接触这么庞大的程序,对于我这个新手小白来说无从下手。
问题解决方法:自己在平时没有大量地手打练习代码,因此真正需要我们编写程序的时候就一头雾水了。我首先看了实验的具体要求,然后在脑子里大概构想出程序的大概框架,我们需要先完成什么再完成什么。这样子把一个大程序解剖开就会稍微轻松一些。遇到一些不懂的地方,我就进行百度了解一下相关的知识点再进行编译。
问题二:对堆栈的概念完全不理解,开不明白具体用堆栈是如何完成计算器功能的。
问题解决方法:主要通过询问已经完成的同学他们的经验,已经在网上寻找一些相关的内容、教程或者方法。然后学习他们的编程过程。
问题三:在看一些教程的过程中遇到许多新的没有学过的知识点,比如object等
问题解决方法:还是利用百度在网上查找一些相关的知识点,主要就是与同学讨论以及自学为主。

对结对的小伙伴做出评价(重点指出需要改进的地方)

在评价别人之前,我想先说说自己的问题。我在之前没有很认真的注意过结对的截止时间,因此学习的时间拉得不够长,学习的便也有些仓促。然后就导致了代码不过关,没有完全达到老师的要求。我认为这些问题归根结底主要还是我对这个结对的不重视,我在之前没有主动的关注蓝墨云上的结对消息,反而还认为一开始不会有作业的。这是我要检讨自己的问题。
关于我结对的小伙伴,他在过程中我们互相查资料,互相询问一些不懂的问题,还是给了我许多帮助。