2013-09-26 68 views
-6

我這個問題,我需要找到工資總額平均爲HourlyEmp ONLY, 我有一個超類Employee和兩個潛艇已經HourlyEmpOverTimeEmp 我命名的數組的Emp []。 Employee Emp[] = new Employee[7] < 7項求出平均

現在我需要的是像我..如果有多個員工誰在hourlyEmp 如何得到他們的工資的平均水平? 到目前爲止,我得到了2個想法,但EM的非工作不知何故

1.

'for(int i=0;i<Emp.length;i++) { 
     if (Emp[i] instanceof HourlyEmp) 

    System.err.println("Average="+(Emp[i].totalsal()/i));' 

2.

double avg=0; 
    for(int i=0;i<Emp.length;i++) { 
     if (Emp[i] instanceof HourlyEmp) 
     avg+=Emp[i].totalsal()/i; 
    System.out.println("Average="+avg); 

我會感激你的幫助:)

+5

首先你需要得到所有工資的總和,然後用'Emp.length'除以這個總和 – Smit

+0

看起來你的第二個例子中的數學是錯誤的。要查找平均值,您需要添加所有實例,然後除以實例的數量。您添加HourlyEmp薪水,然後除以總員工數量,而不是HourlyEmp的數量。 – nhgrif

+0

實際上**發生了什麼? –

回答

2

既然你只想要的HourlyEmp的平均值,則需要跟蹤有多少:

double avg=0; 
int numHourlies = 0; //number of hourlyEmps you have found so far 

for(int i=0; i < Emp.length; i++) 
{ 
     if (Emp[i] instanceof HourlyEmp) 
     { 
      //just add up all the values for now ... 
      avg += Emp[i].totalsal(); 

      //we have found another HourlyEmp, so we increase our count 
      numHourlies ++; 
     } 
} 

// ... and calculate the average by dividing the sum by the number of values 
avg /= numHourlies; 

System.out.println("Average="+avg); 
2

選項如果您正確計算平均值,2將起作用。 I.E.

a = Get summation of total salary 
b = Get a count of how many instances where HourlyEmp 
average = a/b 
1
public double getAverageSalary 
    { 
    double totalSalary = 0; 
    double hourlyEmps = 0; 
    for(int i=0;i<Emp.length;i++)   
    { 
      if (Emp[i] instanceof HourlyEmp) 
      { 
       totalSalary += Emp[i].salary; 
       hourlyEmps++; 
      } 
    } 
    return (totalSalary/ hourlyEmps); 
    } 

然後調用這個方法在你的打印語句。