2012-12-08 109 views
-1

此方法是一個較大程序的一部分,該程序從.txt文件提取僱員數據,然後使用該數據計算淨工資。 我的CalcPay方法應該支付小時> 40小時以及小時< 40的支付,但是當它到達40小時以上的員工時,它僅以小時*工資計算工資,而不是花費大於40小時,讓他們有一段時間......任何建議?方法無法正常工作

public double CalcPay() 
    { 

     double pay = hoursWorked * hourlyWage; 
     double overTimeHours = hoursWorked - FULL_TIME; 

     if (overTimeHours > 0) 
     { 
      pay += overTimeHours * (hourlyWage * OVER_TIME_RATE); 
     } 
     double tax1 = pay * FED_TAX; 
     double tax2 = pay * STATE_TAX; 
     return ((pay - tax1) - tax2); 
    } 
+0

我想知道像你這樣的人應該在計算員工工資的代碼上工作。 – Euphoric

+0

那麼,這是不禮貌:)我是一個工作在一個任務的學生。 – BXL

+0

@Euphoric我想這是功課 – Alan

回答

1

我可能會這樣做。

public double CalcPay() 
    { 
     double regularHours = Math.Min(hoursWorked, FULL_TIME); 
     double overTimehours = Math.Max(hoursWorked - FULL_TIME, 0); 

     double regularPay = regularHours * hourlyWage; 
     double overTimePay = overTimehours * hourlyWage * OVER_TIME_RATE; 
     double pay = regularPay + overTimePay; 

     double tax1 = pay * FED_TAX; 
     double tax2 = pay * STATE_TAX; 
     return ((pay - tax1) - tax2); 
    } 
+0

我感謝你的幫助。當我將修改過的方法切入我的程序時,它會返回我之前得到的相同結果。所以我還是有點迷路。 – BXL

+0

也許你的數學是錯誤的,該計劃的數學是正確的?我用50小時,10美元/小時和1.5加班嘗試了這個例子,我得到了550美元。這應該是400美元(40x10)+(10 * 10 * 1.5)似乎是正確的? – Alan

+0

再想一想,檢查你的輸入/常量。也許其中一個不是你認爲的那樣? – Alan

0

我已經解決了這個問題,因爲許多指出方法的工作,因爲它應該,我讀出輸入的造成的輸出是錯在加時賽的情況下順序。感謝所有提供幫助的人。