2013-09-26 70 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); 
    } 

然后调用这个方法在你的打印语句。