20175202 结对编程练习—四则运算(第一周)
一、需求分析:
1.能自动生成四则运算题目。
2.能支持多运算符运算。
3.能判断使用者答案的正确性。当回答正确时输出正确,当回答错误时输出错误并给出正解。
4.能够统计答题的正确率。
下阶段计划扩展功能:
1.实现由使用者确定生成题目的数量。
2.带括号的四则运算。
3.支持分数运算。
4.实现多语言支持。
5.实现题目去重功能。
6.将生成的题目输出文件,完成题目后从文件读入。
二、设计思路:
1.使用循环结构来依次生成每道题目并判断结果。
2.在每道题目中随机生成两个数和一个运算符(目前阶段只完成了仅包含一个运算符的计算功能,下一阶段将继续开发)。
3.计算正确结果,并与使用者输入的结果进行比较。
4.统计最终的正确率。
三、UML类图:
四、核心代码及解释:
五、运行结果及测试:
六、码云链接:
https://gitee.com/GeXuYang/1059724060/commit/70951abbf44a03cf47c45e1794e2259fd9f0f56c
七、遇到的困难及解决方法:
1.该如何生成随机数。
解决:用java.lang.Math中的random方法。
2.如何让代码运算出除法的正确结果并能实现和使用者答案的比较。
解决:这里就不能模仿自己前面编写的计算加减和乘法结果的函数,经过讨论我们改编成了如下代码,实现了结果。
Scanner sc = new Scanner(System.in);
float num1 = sc.nextFloat();
Float result = (float)x /(float) y;
if (num1 == result) {
return true;
} else {
return false;
}
3.没有弄明白老师将的前缀转后缀的运算方式,也不知如何解决运算优先级问题。
解决:这是我们目前遇到的瓶颈,解决运算优先级问题我们目前想到了解决办法,但前缀转后缀问题我们在给定的时间内还没有弄的完全清楚,这也是我们为何目前代码所实现的功能很少的原因。下一阶段,我们将互相督促,更加努力来在一阶段实现功能。
八、结对评价:
这次的结对编程练习项目是四则运算,我们在看到题目时,认为我们在这种题型上有一定的C语言基础,所以自大的认为实现结果并不困难,下手的比较晚。但是在实际的编程过程中,我们第一次体会到了Java编程和C语言编程很大的不同,由于我们的基础还不牢固,将在解决遇到的问题的过程中受到了很多阻碍。需要不断的查书和上网搜索以争取实现功能和保证代码的规范性。由于我们本周实验课程较多,同时JAVA章节学习的内容也较重。因此我们组还没有完全学习好老师提供的参考博客中给的提示是将中缀转化为后缀运算,所以目前代码实现的功能还非常少,但我们在下一阶段会互相督促,加倍努力,将遗漏的进程补上,实现要求的功能,来完成此次结对项目。