JAVA,从文本文件中读取,从阵列中打印出信息

时间:2015-04-05 19:29:37

标签: java arrays

非常新的Java,我有一个问题

我收到了一个文本文件,并要求找到收入最高的员工,并打印出他们的信息(fName,Lname,ID)

文本文件是这样的:

Date of birth fName lName    wage hr   work emp ID  
12/03/1929    Detzk Fyshe    37   49   07036310484 
04/17/1930    Cauus Walden   38   52   63612537553
07/12/1930    Barth Harling  43   72   42101524036
07/16/1930    Bartl Barnhill 43   62   48621748867

我设法找到最高工资。但不知道如何打印信息

到目前为止我的代码:

public static void main(String[] args) {

    File inFile =  new File ("dataSet.txt");
    ArrayList <String> inData = new ArrayList <String>();


    String strline;


   try
   {  
       FileInputStream fstream = new FileInputStream(inFile);
       BufferedReader br = new BufferedReader (new InputStreamReader (fstream));
       while ((strline = br.readLine()) != null) 
       {
                    strline = strline.trim(); 
                    if ((strline.length()!=0)) inData.add(strline); 
                    }


   } catch (Exception e)    {   
                            System.err.println("Error CANNOT FIND FILE!");
                            }


       // Max wage finder *start*

    int maxWage=0;
    for (int i=0; i<inData.size(); i++){

    String [] word = inData.get(i).split(" ");
     int wage=Integer.parseInt (word[3]);
     int hrWork=Integer.parseInt (word[4]);
     int earn = wage*hrWork;

      if (earn>maxWage){
          maxWage=earn;
      }  
}
  System.out.println("Max Wage in $:"+maxWage);

//max wage finder *end*

2 个答案:

答案 0 :(得分:0)

您可以添加int maxWageOwner, 它会跟踪列表中最终maxWage来自哪个项目。

因此,在if (earn > maxWage) {...}内添加maxWageOwner = i;, 并在for循环之前初始化maxWageOwner

然后打印信息只需访问inData.get(maxWageOwner)

答案 1 :(得分:0)

如果您正在阅读员工数据,那么针对该问题的面向对象解决方案是创建一个强类型的Employee类(日期为Date s,整数为{ {1}} s)为文件内容建模的属性。

除了存储每个int的实际数据的实例变量之外,您可能希望覆盖类中的Employee方法,以便可以轻松输出员工信息,例如到toString()。此外,你需要一个吸气剂来获得&#34;总薪水&#34;员工(使用System.out计算),以便可以在外部比较两名员工的工资,例如:通过Comparator

总而言之,相关部分的代码可能如下所示:

wage * hrWork