为了账号安全,请及时绑定邮箱和手机立即绑定

运行结果怎么都是0.0呢???

public class three1 {
    float LED;
    float mem;
    float CPU;
    //public three1(){
    //    System.out.println("无参的构造方法执行了");
    //};
    public three1(float newLED,float newMem,float newCPU){
        if (LED < 3.5f){
            newLED = 3.5f;
            System.out.println("自动赋值为:3.5");
        }
        else{
            newLED=LED;
        }
        newMem = mem;
        newCPU = CPU;
        System.out.println("有参的构造方法执行了"+"LED:"+newLED+"mem:"+newMem+"CPU:"+newCPU);
        
    }
}

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //three1 fun = new three1();
        three1 fun2 = new three1(4.0f,4.5f,6.4f);
    }

自动赋值为:3.5
有参的构造方法执行了LED:3.5mem:0.0CPU:0.0

正在回答

5 回答

要先赋值


1 回复 有任何疑惑可以回复我~

if (newLED < 3.5f){
            LED = 3.5f;
            System.out.println("自动赋值为:3.5");
        }
        else{
            LED=newLED;
        }
        mem = newMem;
        CPU = newCPU;
        System.out.println("有参的构造方法执行了"+"LED:"+LED+"mem:"+mem+"CPU:"+CPU);

变量赋值写反了

0 回复 有任何疑惑可以回复我~

这个吧就是你没看清楚变量把。fun2 传递过去的参数分别给了    

newLED,newMem,newCPU这三个,他们三个都有值了也就是4.0f,4.5f,6.4f

        newMem = mem;这句话的意思 把上面定义的成员变量mem为默认值0赋给了newMem,

    其他的都是这个意思,所以是0

0 回复 有任何疑惑可以回复我~

因为你赋值4.0,4.5,6.4的时候是给newLED,newMem,newCPU赋的,但是比较的时候却又是与LED比较的,所以系统会自动赋值0与3.5比较,其他两个问题也是一样的,都是把顺序给弄反了,应该是:mem=newMem; CPU=newCPU;不然的话都是把系统自动赋值0给了newMem和newCPU。

0 回复 有任何疑惑可以回复我~

构造函数写错了,这样写

 public three1(float newLED,float newMem,float newCPU){
        if (newLED< 3.5f){
            LED= 3.5f;
            System.out.println("自动赋值为:3.5");
        }
        else{
            LED=newLED;
        }
        mem=newMem;
         CPU=newCPU;
        System.out.println("有参的构造方法执行了"+"LED:"+LED+"mem:"+Mem+"CPU:"+CPU);
        
    }
}

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

运行结果怎么都是0.0呢???

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信