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 语句在程序运行时检查变量的状态。