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
.