您可以尝试20.0和180.0迫使他们浮点,否则你的计算可能最终会被整数不会很好地工作,否则,一切似乎都很好。
另外我建议一个或两个单元测试。如果你输入0,90,180和260,你应该输出偶数(+/- 20,0或0,20)。这将帮助你调整它,让你相信结果。
- 编辑 - 写了你的程序的一个常规版本,因为我不认识你的很多代码。发现rad与rads的问题(在评论中提到)。下面是你的算法的一个常规转储:
float degrees=0.0
float rads = degrees * (Math.PI/180.0);
float x = 20.0 * Math.cos(rads);
float y = 20.0 * Math.sin(rads);
degrees = degrees + 1
println x
println y
这是有效的。单元测试的意思是你可以设置一些以“0.0”度调用你的方法,并确保输出的x为20.0,y为0.0,然后用90调用它,你应该得到0,20(实际上你可能会得到一个轻微的浮点错误,只是测试看到x是小于.001或者其他东西)
如果您使用谷歌认可的框架来开发这些应用程序,我100%肯定会有一些“官方”做单元测试的方式,我强烈建议你仔细研究一下,特别是对于动态语言,单元测试可以是绝对关键的。
单元测试最重要的部分之一是,您可以在开发环境中使用单点触摸来运行它们。这可以确保无论您添加什么代码,以前的所有工作仍然有效。它可以让你有信心去重构现有的代码,而不用担心打破你甚至不知道互动的东西。
大多数以动态语言工作的人认为单元测试是绝对需求,甚至在静态类型语言中,它们非常重要,因为您的项目越来越小。
嗯,我仍然必须失去一些东西,我改变了20到20.0和180到180.0,但是当我运行它时,我仍然看不到任何动作。通过单元测试你的意思是尝试让它输出数字而不是告诉对象去哪里?我不确定我知道单元测试是什么。我也忽略了我设定度数为100的部分,但我认为这正是它在圈子中开始的地方。你能否看看我是否可以改变任何事情,如果我只是留下了一些东西。谢谢,詹姆斯。 – 2010-10-05 14:22:07
@詹姆斯做单元测试的最简单方法就是为每个测试该类的类添加一个main()方法。只需传递数字,看看它们是否与你期望的相符。恐怕我不知道到底发生了什么,“local rads”不是我熟悉的类型,它需要等同于float/double,而不是int/long。我将在Java中快速检查并翻译一些内容并发布我的结果。 – 2010-10-05 16:47:20
@詹姆斯一个问题,你知道你说的是“本地拉德”,后来你用“拉德”。动态语言通常有一个巨大的缺陷,因为如果你拼错了它们,它们就会无声无息地创建变量。否则你的算法是健全的,我得到了有效的结果。 – 2010-10-05 16:55:07