Setter 无法正确修改字段
Setter can't modify the field properly
我在创建求解简单运动学的程序时遇到问题。
我 运行 程序并发现字段没有被正确修改。这是
初始化对象和设置变量的程序片段。
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 感谢您的帮助。
这与 setter 方法完全无关——你的除法是错误的,因为 1 / 2
做整数除法而 returns 0 导致方程计算简单 distance / time
.
更改为:
u_ans = (distance - 1.0 / 2.0 * acceleration * time * time) / time;
要学习的教训:不要假设错误在哪里 -- test 它。使用调试器或 println 语句在程序运行时检查变量的状态。
我在创建求解简单运动学的程序时遇到问题。
我 运行 程序并发现字段没有被正确修改。这是 初始化对象和设置变量的程序片段。
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 感谢您的帮助。
这与 setter 方法完全无关——你的除法是错误的,因为 1 / 2
做整数除法而 returns 0 导致方程计算简单 distance / time
.
更改为:
u_ans = (distance - 1.0 / 2.0 * acceleration * time * time) / time;
要学习的教训:不要假设错误在哪里 -- test 它。使用调试器或 println 语句在程序运行时检查变量的状态。