Java Setter can';不要正确地修改字段
我在创建一个解决简单运动学的程序时遇到了一个问题 我运行程序,发现字段没有被正确修改。这是 初始化对象和设置变量的程序片段Java Setter can';不要正确地修改字段,java,integer-division,Java,Integer Division,我在创建一个解决简单运动学的程序时遇到了一个问题 我运行程序,发现字段没有被正确修改。这是 初始化对象和设置变量的程序片段 public class LinearConstantAcceleration1DKinematics { private double distance; private double speed; private double acceleration; private double time; public LinearCon
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,这是不正确的。非常感谢您的帮助。这与setter方法完全无关-您的除法是错误的,因为
1/2
进行整数除法,并返回0,从而导致方程式只计算距离/时间
改为:
u_ans = (distance - 1.0 / 2.0 * acceleration * time * time) / time;
教训:不要假设错误在哪里--测试它。在程序运行时,使用调试器或println语句检查变量的状态。这与setter方法完全无关——您的除法是错误的,因为
1/2
进行整数除法,并返回0,从而导致方程式只计算距离/时间
改为:
u_ans = (distance - 1.0 / 2.0 * acceleration * time * time) / time;
教训:不要假设错误在哪里--测试它。在程序运行时,使用调试器或println语句检查变量的状态。这与setter方法完全无关——您的除法是错误的,因为
1/2
进行整数除法,并返回0,从而导致方程式只计算距离/时间
改为:
u_ans = (distance - 1.0 / 2.0 * acceleration * time * time) / time;
教训:不要假设错误在哪里--测试它。在程序运行时,使用调试器或println语句检查变量的状态。这与setter方法完全无关——您的除法是错误的,因为
1/2
进行整数除法,并返回0,从而导致方程式只计算距离/时间
改为:
u_ans = (distance - 1.0 / 2.0 * acceleration * time * time) / time;
教训:不要假设错误在哪里--测试它。在程序运行时,使用调试器或println语句检查变量的状态。可以发布完整的代码吗?因为System.out.printf(%f\n),Kinetics.getU());没有编译,并且没有setA()或setT()HaHaman,所以您仍然没有发布完整的代码。您可以发布完整的代码吗?因为System.out.printf(%f\n,Kinetics.getU());没有编译,也没有setA()或setT()HaHaman,你还没有发布完整的代码。你能发布完整的代码吗?因为System.out.printf(%f\n),Kinetics.getU());没有编译,并且没有setA()或setT()HaHaman,所以您仍然没有发布完整的代码。您可以发布完整的代码吗?因为System.out.printf(%f\n,Kinetics.getU());没有编译,也没有setA()或setT()HaHaman,你还没有发布完整的代码。整数分割上的漂亮捕捉整数分割上的漂亮捕捉整数分割上的漂亮捕捉整数分割上的漂亮捕捉整数分割上的漂亮捕捉整数分割上的漂亮捕捉