在创建解决简单运动学的程序时遇到问题。
我运行程序并找出尚未正确修改的字段。这是 我的程序废料初始化对象并设置变量。
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,这是不正确的。非常感谢您的帮助。
答案 0 :(得分:3)
这与setter方法完全无关 - 你的除法是错误的,因为1 / 2
进行int除法并返回0,导致方程只计算distance / time
。
更改为:
u_ans = (distance - 1.0 / 2.0 * acceleration * time * time) / time;
要学习的课程:不要假设错误在哪里 - 测试 它。使用调试器或println语句在程序运行时检查变量的状态。