2014-11-04 42 views
-1

我遇到的问题是,无论如何我都可以比较最终的平均工资,然后再次通过循环,并将最终平均工资与每项工资进行比较,然后确定哪些人较低并将该人列印出来,然后执行此操作每个人我都遇到麻烦试图找出这里是我的代码。我应该把人放在另一个数组列表中,并从那里进行比较?列出低于平均水平的人员?

import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

/** 
* Created by Kuroii on 11/3/2014. 
*/ 
public class BelowAverage { 
    public static void main(String[] args) { 
     String inputFile = "c:\\Users\\Kuroii\\documents\\javafiles\\sampletwodata.txt"; 
     String strline,FirstNames="",SurNames="",EMPnumbers=""; 
     int totalSalary=0,averageSalary=0,salary=0; 
     // 

     ArrayList<String> inputLines = new ArrayList(); 
     try { 
      FileInputStream fstream = new FileInputStream(inputFile); 
      BufferedReader inputBuffer = new BufferedReader(new InputStreamReader(fstream)); 
      System.out.println("Starting..."); 
      while ((strline = inputBuffer.readLine()) != null) { 
       inputLines.add(strline); 
      } 
      System.out.print("Read in "); 
      System.out.print(inputLines.size()); 
      System.out.println(" lines"); 

     } catch (Exception e) { 
      System.err.println("MB Error reading input file"); 
     } 
     for (int i = 0; i < inputLines.size(); i++) { 
      String delim = "[ ]+"; 
      String[] fields = inputLines.get(i).split(delim); 
      String wage = fields[3]; 
      String hours = fields[4]; 
      FirstNames = fields[1]; 
      EMPnumbers = fields[5]; 
      SurNames = fields[2]; 
      salary = Integer.parseInt(wage) * Integer.parseInt(hours); 
      totalSalary =totalSalary + salary; 
      averageSalary = totalSalary/inputLines.size(); 

     } 
    } 
} 
+0

您刚才告诉文字的算法。把它写入Java代码只是一个抄写作 – Dici 2014-11-04 18:50:19

+0

我认为最好是定义一个新的'class'来保存每个人的信息,然后设置一个'ArrayList '。 – ajb 2014-11-04 18:53:42

回答

2
  1. 建立一个叫做PersonEmployee类,它具有描述性的名字如Salary
  2. 使Person的集合。称之为people
  3. 计算平均薪水。您可以将所有薪水相加,然后除以人数。
  4. 做出一个新的集合,并插入到该集合的人,只有当他们有一个较低的薪水低于平均
+0

Java何时开始支持LINQ? – ajb 2014-11-04 18:54:18

+0

@ajb我讨厌它,当我这样做 – 2014-11-04 18:57:37

+0

仅供参考,Java 8可以做类似于你在C#中尝试做的事情...... http://docs.oracle.com/javase/8/docs/api/java /util/stream/DoubleStream.html#average-- – ajb 2014-11-04 19:24:25