有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java返回值显示为0.0。为什么会这样?

public   class    employee {

 String empname; 
    int  empcode    ; 
   double basicpay;

    employee()
    {
        empname     =  "";
        empcode     =  0;
        basicpay     =  0.0;
    }
    employee(String n , int p , double q)
    {
        n = empname;
        p = empcode;
        q = basicpay;
    }
    double salarycal()
    {
        double salary,hra,da,allowance,totalsalary;allowance = 0;totalsalary = 0;
        hra = 0.3*basicpay;
        da = 0.4*basicpay;
        salary = basicpay + hra + da;
        if(empcode<=15 && salary<=15000)
        {
            allowance = 0.2*salary;
            if (allowance> 2500)

            allowance  =  allowance - (allowance-2500);
        }
        else 
        {
            allowance = 1000;
         }
        totalsalary =salary + allowance;

        return totalsalary;//the problem is that the total salary is not returned.
    }
}

请说明必须对程序进行哪些更正


共 (3) 个答案

  1. # 1 楼答案

    它工作正常,因为你用0乘以所有东西

    hra = 0.3*basicpay; // basicpay is 0. so 0.
    da = 0.4*basicpay; // basicpay is 0. so 0.
    salary = basicpay + hra + da; // 0+0+0 = 0
    

    basicpay分配一个非零值。在构造函数中,您已经交换了参数和字段。如果你使用this这个错误会很明显,比如

    employee(String n , int p , double q)
      // n = empname;
      // p = empcode;
      // q = basicpay;
      this.empname = n;
      this.empcode = p;
      this.basicpay = q;
    }
    

    此外,类名(按照惯例)应该以大写字母开头Employee

  2. # 2 楼答案

    默认构造函数 在默认构造函数中,初始化为零,basicpay = 0.0,然后将所有内容乘以它,所以答案为零

    参数化构造函数在参数化构造函数中,赋值错误

     employee(String n , int p , double q)
        {
            n = empname;
            p = empcode;
            q = basicpay;
        }
    

    basicpaydouble,即默认值是0.0,所以它也会给你零结果

    修改代码:

    employee(String n , int p , double q) {
        this.empname = n;
        this.empcode = p;
        this.basicpay = q;
    }
    
  3. # 3 楼答案

    我相信你们的一个构装师正在做反向作业。它应该看起来像:

    employee(String n , int p , double q)
    {
        empname = n;
        empcode = p;
        basicpay = q;
    }