2016-10-04 50 views
0

我正在做一个类,我试图创建一个以时间为参数,并做此公式找到距离的方法,我已经创建了一个方法的价值的问题的东西:具有计算从使用公式

d(t) = vt cosθ 

其中d(t)是距离,v是速度,t是时间,θ是以度为单位的角度。

这是我写它在Java中,然后我测试,但没有得到正确的结果。

如果我用这些值计算距离:velocity = 21 time = 43 angle = 62我得到了423.93的结果,但是如果我把它放在我的测试类中并使用方法(并放入相同的值)得到487.89。

我做错了什么?为什么我得到这个价值?

方法:

public double getDistance(double time) { 
    double vt = velocity * time; 
    angle = (int) Math.toRadians(angle); 
    double cosineCalc = Math.cos(angle); 
    double distance = vt * cosineCalc; 
    return distance; 

测试类的实现:

Projectile testOne = new Projectile(21, 62); 
double actual = testOne.getDistance(43); 

回答

2

的问题是,(int) Math.toRadians(angle)失去精度,并结束了其四舍五入为整数。要使其工作,请确保angle保留为double并删除(int)强制转换。

+0

狗屎你说得对......现在我只需要问我的教授为什么他让我把角为int ...感谢您的答案,虽然 –

0
angle = (int) Math.toRadians(angle); 

删除(整型)铸件,它应该工作。