当创建一个程序来解决简单的运动学问题时,我遇到了一个问题。
我运行程序,发现字段没有被正确修改。这里是我的程序的碎片,它初始化对象并设置变量。
public class LinearConstantAcceleration1DKinematics {
private double distance;
private double speed;
private double acceleration;
private double time;
public LinearConstantAcceleration1DKinematics() {
/* initialize the object */
distance = 0;
speed = 0;
acceleration = 0;
time = 0;
}
public void setS(double s) {
this.distance = s;
}
//continue with 3 more setters which is created in the same way ,i have omitted them here
public double getU(){
double u_ans;
u_ans = (distance - 1/2 *acceleration*time*time )/time;
return u_ans;
}
}下面是使用这些方法的主要部分
LinearConstantAcceleration1DKinematics kinematics = new LinearConstantAcceleration1DKinematics();
kinematics.setS(175);
kinematics.setA(10);
kinematics.setT(5);
System.out.printf(%f\n", kinematics.getU());结果是35,这是incorrect.Many,谢谢您的帮助。
发布于 2015-11-01 04:08:34
这与setter方法完全无关--您的除法是错误的,因为1 / 2执行int除法并返回0,从而使方程简单地计算为distance / time。
改为:
u_ans = (distance - 1.0 / 2.0 * acceleration * time * time) / time;要吸取的教训:不要假设错误在哪里-- test it。使用调试器或println语句检查程序运行时变量的状态。
https://stackoverflow.com/questions/33459070
复制相似问题