首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Setter不能正确地修改字段

Setter不能正确地修改字段
EN

Stack Overflow用户
提问于 2015-11-01 03:59:54
回答 1查看 38关注 0票数 0

当创建一个程序来解决简单的运动学问题时,我遇到了一个问题。

我运行程序,发现字段没有被正确修改。这里是我的程序的碎片,它初始化对象并设置变量。

代码语言:javascript
复制
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;
    }



}

下面是使用这些方法的主要部分

代码语言:javascript
复制
LinearConstantAcceleration1DKinematics kinematics = new LinearConstantAcceleration1DKinematics();

    kinematics.setS(175);
    kinematics.setA(10);
    kinematics.setT(5);
    System.out.printf(%f\n", kinematics.getU());

结果是35,这是incorrect.Many,谢谢您的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-01 04:08:34

这与setter方法完全无关--您的除法是错误的,因为1 / 2执行int除法并返回0,从而使方程简单地计算为distance / time

改为:

代码语言:javascript
复制
u_ans = (distance - 1.0 / 2.0 * acceleration * time * time) / time;

要吸取的教训:不要假设错误在哪里-- test it。使用调试器或println语句检查程序运行时变量的状态。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33459070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档