返回值显示为 0.0.为什么会这样

  • 本文关键字:显示 返回值 java
  • 更新时间 :
  • 英文 :

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.
    }
}

请告诉必须对程序进行哪些更正。

我相信你的一个构造函数正在向后做赋值。它可能应该看起来像:

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

默认构造函数在默认构造函数中,您正在初始化为零,basicpay = 0.0并且您将所有内容都乘以它,因此答案为零。

参数化

构造函数 在参数化构造函数中,您错误地分配了值

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

basicpay double即默认值为0.0,因此它也将为您提供零结果。

修改后的代码:

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

它工作正常,因为您将所有内容都乘以 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 .

最新更新