您的位置:首页 > 其它

软件工程——第四次作业(3)

2017-10-11 12:37 176 查看
要求一

(1) 给出每个功能的重点、难点、编程收获。(2)给出结对编程的体会(3) 至少5项在编码、争论、复审等活动中花费时间较长,给你较大收获的事件。

答:(1)功能的重点、难点及编程收获

a.对运算符的考虑。在此次编程中,运算符的处理是个难点。首先要考虑关于运算符的所有可能性,然后要考虑到这些运算符的优先级。

b.两种情况的处理。是答题还是教师出题,教师出题时,对输入题目数量是否符合要求的判断。

c.考虑到括号的所有情况。考虑全面括号的所有情况,然后分门别类的进行表达式生成的处理。

d.计算时的后缀表达式。在计算时,因为涉及括号,要将中缀表达式转换成后缀表达式,利用栈,一步一步地判断是数字还是符号的情况。

e.计算时。后缀表达式存储在栈中,是数字存储在一个栈中,符号存储在一个栈中,弹出数字,弹出符号,进行计算,计算的结果还要压入栈中,作为下次运算的操作数。

f.格式控制的小细节。每个参与运算的数字,其实质都应该是double类型的,但是在显示的时候要显示成整数形式,这里就要注意对数的处理。

(2)结对编程的体会。

当对方在为某个问题困扰时,在一旁观看的自己就会觉得,是那里那里那里的什么什么小问题,然后看着对方恍然大悟的样子,觉得这时的两个人就是一种互为补充,找到对方找不到的错误,提高了效率。遇到较难处理的情况时,两个人都一筹莫展,当其中一个人想到某个方法思路时,要清晰地向另一个人阐述清楚,然后两个人一起解决这个问题,会很有成就感。以前自己编程时很随意,很长很长的一个方法也会写在main函数中,结对后,明晰了这样做是不好的,不利于团队开发,要在main函数中写好调用方法,然后单独写这个方法,将大段大段长的代码放到相应的方法中,这样的开发习惯是良好的,利于以后的团队开发。

(3)大收获

a.刚开始的时候,面对这个题目是没有思路的,因为不知道那四个符号要如何处理,这四个符号的优先级是不同的,并且如果再加入括号,感觉更难处理。通过查阅相关资料及讨论,找到了一个运算符比较器的类,可以判定符号的优先级。

static Comparator<String> comp = new Comparator<String>(){};

b.对于有关括号的计算,要涉及到中缀式转换成后缀式,使用栈,不断判断,不断压入栈内。

c.在讨论括号情况时,要注意全面。

d.计算结果的时候,又一次使用栈,一个栈弹出操作数,一个栈弹出运算符。而自己对栈这样的算法编程掌握的并不是很好。以前自己可以独立地编写一个小系统,还能运行,感觉很满足,现在想一想,那时只是跟着老师,学习掌握java中很小一部分适于开发编程的知识,对于像数据结构中例如堆栈这样的偏算法类的编程,掌握的少之又少,以后应该多加强自己在这方面的学习,去学习一些经典的算法和常用的类似此次编程中的转换成后缀式的方法。

e.细节处理。在大体完成后,每次手动运行程序进行检测时,不是出现显示格式不对的问题,就是出现小数结果没有按照要求进行位数保留的问题,尤其在处理运算的四个数时,其本质类型为double,是为了得到最后准确的结果,但是题目显示时,要注意显示成int型,像这样的小细节,还有很多很多,直接决定程序的好还,所以要多多注意。

要求二

给出照片1张,包括结对的2位同学、工作地点、计算机,可选项包括其他能表达结对编程工作经历的物品或场景。

照片:



结对同学:王航,李传康

工作地点:图书馆

计算机:华硕笔记本

要求三

使用coding.net做版本控制。checkin 前要求清理 临时文件、可执行程序,通常执行 build-clean可以达到效果。

git代码

链接地址:https://git.coding.net/lick468/f4.git

程序缺陷:

重复题目的判断(未完成),虽然花了很长时间讨论,但是没有完成。

代码运行截图:





图一:判断输入的题目数量是否为正整数



图二:根据输入的数量生成题目



图三:生成的题目(.txt文件)



图四



图五



图六

图四、图五、图六:题目作答情况
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: