Setter无法正确修改字段

时间:2015-11-01 03:59:55

标签: java integer-division

在创建解决简单运动学的程序时遇到问题。

我运行程序并找出尚未正确修改的字段。这是 我的程序废料初始化对象并设置变量。

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,这是不正确的。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

这与setter方法完全无关 - 你的除法是错误的,因为1 / 2进行int除法并返回0,导致方程只计算distance / time

更改为:

u_ans = (distance - 1.0 / 2.0 * acceleration * time * time) / time;

要学习的课程:不要假设错误在哪里 - 测试 它。使用调试器或println语句在程序运行时检查变量的状态。