首先是我在 裴健淞 的github上留下的issue信息截图:
(不得不说,裴同学的编程水平比我好了很多,我在编写程序时没有考虑到或者无法解决的问题,在看了他的代码以后提供了解决的思路,得感谢裴同学。)
测试代码时遇到的问题更多的在于自身而不是代码,因为在老师提供的测试例子之外,我难以想到其他可以进行测试的条件,这与我平时编写程序时不够严谨有关系。因此我从测试输入数据改为检查代码上是否存在可以优化和精简,以及对用户交互性上的优化入手来对程序进行测试,果然还是被我发现了几个小瑕疵。
issue的功能总体上来说还是很简介明了的,使用中并没有什么太大的问题,它提供的功能能更清晰的罗列出错误的所在。
【看了别人提交的issue才发现自己提交的issue格式错的有些离谱.....下次不会再犯了.....】
在我的issue上被提交的问题有:
1.对于输入不符合要求的问题,我从直接输入数组改为先把答案输入字符串,再通过将字符串与字符串数组之间进行比对,达到验证对错的效果。
2.同理,通过把答案先输入字符串的方法,保证输入的答案被分到同一变量里进行比对。
3.正确率的计算问题通过debug发现当除以题目总数显示的数字为0.0,发现当初定义rate变量的时候用的是int类型导致不保留小数位,使得正确率计算错误。
4.分数计算的方法我进行了更改,先计算出经过计算的分子和分母再共同除以计算后的分子分母的最大公约数进行化简,避免了分子分母出现小数的可能性。
5.由裴同学的代码收到启发,在输入随机数的时候将分子分母的随机值分开输入,先输入分母的数值再将同位分母的数字作为最大值上限,限制输入分子的随机值的大小,以达到真分数的目的。
遇到的问题与解决:
1.在限制输入字符串的格式问题上,我查询到可以使用正则表达式来定义输入字符串的格式,由于对正则表达式不够熟悉,在编写表达式的时候总是无法达到预期的目的,不得已只能通过搜索找到合适的正则表达式。
^-?[0-9]*[/][1-9]* 用来规定分式输入的格式
^-?[0-9]+([.][0-9]+){0,1}$ 用来规定整数运算的输入格式 (整数或小数)
2.在运行过程中计算最大公约数的函数突然报错,通过查询错误信息发现是栈溢出。然而在调试过程中并没有出现这种问题,由于不知道如何解决,我选择更换计算函数。也许是原本的计算函数选择的是多次递归的方法导致死循环溢出,所以我改用while循环的计算语句来代替。更换语句以后便没有出现相应的错误。
在这次的修改过后应该是没有什么较为明显的问题了,剩下的更多是对结构的优化和人机交互上的处理。
【不得不说自己还是太懒了一点,拖到现在才修改完成。对java的不熟悉是一方面,偷懒又是另一方面,接下来我会赶紧做完剩余的任务的。】