2015-01-08 56 views
-8
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. 
    } 
} 

請告訴該程序必須進行哪些更正。返回值顯示爲0.0。爲什麼這樣?

+4

緊急或儘快解決的事實與主要問題完全無關。如果你需要快速的話,那麼去一個你**支付**解決方案的網站。在這裏你會得到免費的幫助 –

+1

你甚至可以調試你的應用程序來看看發生了什麼? –

回答

4

我相信你的構造函數的一個向後做任務。它應該看起來像:

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

我正要發佈這個。 +1擊敗我。 :-) –

0

它工作正常,因爲你用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

+1

此代碼有太多問題。在這裏提到它可能是它自己的一篇文章! :-) –

+0

謝謝你的幫助球員 –

1

默認構造 在默認的構造函數要初始化爲零,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; 
}