2016-03-03 40 views
1

在我的面向對象的編程課程中,我有一項任務,它要求我開發一個java代碼,用於在使用來自a.txt的信息時打印假公司的工資信息。 txt文件。我能夠打印出員工的姓名和所有內容,但是我在理解如何獲得平均薪水方面遇到了一些麻煩,我已經開始採用這種方法,並且在代碼如下。任何幫助,將不勝感激。當從.txt文件獲取信息時,發現平均值和總數

Employee類:

public class Employee { 
    private String firstName; 
    private String lastName; 
    private String rank; 
    private double salary; 

    public Employee(String firstName, String lastName, String rank, double salary) { 
     super(); 
     this.firstName = firstName; 
     this.lastName = lastName; 
     this.rank = rank; 
     this.salary = salary; 
    } 
    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
    public String getLastName() { 
     return lastName; 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
    public String getRank() { 
     return rank; 
    } 
    public void setRank(String rank) { 
     this.rank = rank; 
    } 
    public double getSalary() { 
     return salary; 
    } 
    public void setSalary(double salary) { 
     this.salary = salary; 
    } 
} 

prog5類:

import java.util.*; 
import java.io.*; 

public class Prog5 { 
    public static void main(String[] args) { 

     String firstName = null; 
     String lastName = null; 
     String rank = null; 
     double salary = 0.0; 
     Scanner inFile = null; 
     Employee[] arr = new Employee[99]; 
     int num = 0; 

     try { 
      inFile = new Scanner(new File ("c:\\Users\\admin\\workspace\\Shumaker5\\src\\employees.txt")); 
     } 
     catch(FileNotFoundException e) { 
      System.err.println(" File not found"); 
      System.exit(1); 
     } 

     //read file 
     while(inFile.hasNext()) { 
      try { 
       firstName = inFile.next(); 
       lastName = inFile.next(); 
       rank = inFile.next(); 
       salary = inFile.nextDouble(); 
      } 
      catch(InputMismatchException e) { 
       System.err.println("File format error"); 
       System.exit(1); 
      } 

      Employee emp = new Employee(firstName, lastName, rank, salary); 
      arr[num] = emp; 
      num++; 

      /** 
      * method to calculate average 
      * @param temperatures 
      * @param counter 
      * @return 
      */ 
     /** public static double average(double[] salary, int num) 
      { 
       double sum = 0; 
       for(int t = 0; t < num; t++) 
      { 
        sum += salary[t]; 
      } 
       return (double) sum/num; 
      } */ 

      System.out.println(emp); 
     } 
     System.out.println(); 
     System.out.println("Wayne Industries"); 
     System.out.println(); 
     System.out.println("Number of Employees: " + num); 
     System.out.println("Average Salary: "); 
     System.out.println("Annual Total: "); 
     System.out.println(); 
     System.out.printf("%-15s %-15s %-6s %-8s \n", "Last Name", "First Name", "Rank", "Salary"); 
     System.out.println(); 

     for(int x = 0; x < num; x++) { 
      System.out.printf("%-15s %-15s %-6s %-8.2f\n", arr[x].getLastName(), 
        arr[x].getFirstName(), arr[x].getRank(), arr[x].getSalary()); 
     } 
     inFile.close(); 
    } 
} 
+0

您能指出哪裏有問題嗎?當你有一個具體的問題,你應該避免只是把你所有的代碼... – Maljam

+0

我說問題領域被註釋掉了。它在編類 – theshu

回答

0

我懷疑你需要先檢索薪水爲一個字符串,然後用雙提取雙(如: parseDouble(工資))。希望這可以幫助!

0

你非常接近。我們只需要傳遞員工數組(而不是他們的薪水)並計算方法中的平均值。下面提供了一個示例:

public static double average(Employee[] employees){ 
     double sum = 0; 
     for(int t = 0; t < employees.length; t++){ 
      sum += employee[t].getSalary(); 
     } 
     return (double) sum/employees.length; 
    } 
+0

Thankyou這麼多。這是我第一次使用一個文本文件,所以我有點失去了這有助於immensley – theshu

+0

我仍然收到兩個錯誤更新後的代碼,在返回聲明我得到void方法不能返回一個值。並在公共靜態雙線上表示非法修飾符爲變量平均值;只有最後才允許 – theshu

+0

您可能會將該方法粘貼到錯誤的地方。你能確保這種方法不被粘貼到現有的方法中嗎? –