首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的带有继承的NullPointerException

Java中的带有继承的NullPointerException
EN

Stack Overflow用户
提问于 2020-01-22 04:47:25
回答 2查看 103关注 0票数 1

我正在写一个程序来模拟人体在运动时的体温。我写了一个宽泛的“隔间”类,看起来像这样:

代码语言:javascript
复制
public class compartment {

    public float height;
    public float weight;
    public float age;
    public float mrest;

    public float HR;
    public float VO2;
    public float [] temps;
    public float [] K = {54.29f, 41.76f, 15.87f, 41.76f, 20.88f};

    private float BF;
    private float T;
    private float H;

    private float hCap;
    private float dnsty;

    public compartment(float height, float weight, float age, float HR, float VO2, float [] temps) {

        height = this.height;
        weight = this.weight;
        age = this.age;
        mrest = 1.5f * weight;

        HR = this.HR;
        VO2 = this.VO2;
        temps = this.temps;
    }

    // GETTERS
    public float getBF() {
        return BF;
    }
    public float getT() {
        return T;
    }
    public float getH() {
        return H;
    }
    public float gethCap() {
        return hCap;
    }
    public float getDnsty() {
        return dnsty;
    }

    // SETTERS
    public void setBF(float BF) {
        BF = this.BF;
    }
    public void setT(float T) {
        T = this.T;
    }
    public void setH(float H) {
        H = this.H;
    }
    public void sethCap(float hCap) {
        hCap = this.hCap;
    }
    public void setDnsty(float dnsty) {
        dnsty = this.dnsty;
    }
}

然后我写了一个子类,它是主体的核心部分,看起来像这样:

代码语言:javascript
复制
public class core extends compartment{

    public void calc() {

        // Setting up constants
        int n = 0;
        float H = 0.824f;
        setDnsty(1.1f);
        sethCap(51);

        // Calculating blood flow
        float pctMaxHr = HR/(220-age);
        float dubois = (float) (2.0247 * Math.pow(height, 0.725) * Math.pow(weight, 0.425));
        float pctMaxBf = (float) ((pctMaxHr <= 39) ? 100:100 - 1.086*(pctMaxHr-39));
        float maxBf = (float) (0.92*dubois*3.2);
        float bf = (pctMaxBf)*(maxBf);

        // Calculating heat production
        setH(mrest*H);

        // Calculating derivative
        float Q = getH() - (K[n]*(temps[n] - temps[n+1])) - (bf*getDnsty()*gethCap()*(temps[n] - temps[5]));

        // Adjusting the temperature
        float T = temps[n] + Q;
        setT(T);
    }

    public core(float height, float weight, float age, float HR, float VO2, float[] temps) {
        super(height, weight, age, HR, VO2, temps);
        calc();
    }

}

然而,当我尝试创建一个“核心”对象时,我得到的是java NullPointerException。

代码语言:javascript
复制
Exception in thread "main" java.lang.NullPointerException
    at core.calc(core.java:22)
    at core.<init>(core.java:32)
    at model.main(model.java:7)

第22行是这一行

代码语言:javascript
复制
float Q = getH() - (K[n]*(temps[n] - temps[n+1])) - (bf*getDnsty()*gethCap()*(temps[n] - temps[5]));

使用System.out.println进行一些调试,似乎没有一个变量被正确实例化,例如,当我打印变量mrest或height时,它们都显示为0.0

我是否遗漏了继承的一个基本属性?我做错了什么?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-22 04:57:26

这是因为您对set值的赋值是错误的。它应该是this.dnsty = dnsty,其他的也是一样的。(构造函数也是)

票数 3
EN

Stack Overflow用户

发布于 2020-01-22 05:02:10

在构造函数的初始化过程中,超类中的变量被错误地赋值,这应该是this.height = height; this.weight = weight; this.age = age; //...的另一种情况

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

https://stackoverflow.com/questions/59848991

复制
相关文章

相似问题

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