2016-12-12 1 views
0

Я создал программу, которая читает текстовые файлы и программу, которая вычисляет общую сумму вознаграждения, включая сверхурочные. Как можно объединить две команды, чтобы сделать программу, которая берет информацию сотрудника из текстового файла, чтобы рассчитать общую плату, а не принимать информацию с пользовательского ввода ???Как использовать информацию из документа для расчета общей суммы оплаты с помощью java-программы

Вот мой код для чтения текстового файла:

System.out.println("Reading File ......"); 

    String fileName="random.txt"; 
    try{ 

     FileReader inputFile = new FileReader(fileName); 

     BufferedReader bufferReader = new BufferedReader(inputFile); 

     String line; 

     while ((line = bufferReader.readLine()) != null) { 
     System.out.println(line); 
     } 

     bufferReader.close(); 

    }catch(Exception e){ 
     System.out.println("Error while reading file line by line:" + e.getMessage());      
    } 

и вот мой код для расчета общей заработной платы:

public static void main(String[] args) { 
double rate; 
double hoursWorked; 
double regularPay; 
double overtimePay; 
final int FULL_WEEK = 40; 
final double OT_RATE = 1.5; 


    Scanner keyboard = new Scanner(System.in); 
    System.out.print("What is your first name? "); 
    String firstname = keyboard.nextLine(); 
    System.out.print("What is your last name? "); 
    String lastname = keyboard.nextLine(); 
    System.out.print ("What is your social security #? "); 
    String ss = keyboard.nextLine(); 
    System.out.print("How many hours did you work this week? "); 
    hoursWorked = keyboard.nextDouble(); 
    System.out.print("How much are you paid an hour? "); 
    rate = keyboard.nextDouble(); 

    if(hoursWorked > FULL_WEEK) 
    { 
    regularPay = FULL_WEEK * rate; 
    overtimePay = (hoursWorked - FULL_WEEK) * OT_RATE * rate; 
    } 
    else 
    { 
    regularPay = hoursWorked * rate; 
    overtimePay = 0.0; 
    } 
    System.out.println("----------------------------"); 
    System.out.println("Frist name: " + firstname); 
    System.out.println("Last name: " + lastname); 
    System.out.println("SS#: " + ss); 
    System.out.println("Regular pay is " + regularPay + "\nOvertime pay is " + overtimePay); 
} 

} 

ответ

0

в зависимости от того, как структурированы ваши данные, например, сотрудники запись в random.file перечислены ниже:

Гарри потер 100001 40 100

Анакин Скайуокер 100002 50 100

...

Каждая из записей, разделенных пробелами, теперь, наши данные готовы, давайте создадим POJO (в Sperate файле) для сотрудника:

public class Employee { 
    String firstName; 
    String lastName; 
    String securityNum; 
    float workingHoursPerWeek; 
    float salariesPerHour; 
    float regularPay; 
    float overtimePay; 

    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 getSecurityNum() { 
     return securityNum; 
    } 

    public void setSecurityNum(String securityNum) { 
     this.securityNum = securityNum; 
    } 

    public float getWorkingHoursPerWeek() { 
     return workingHoursPerWeek; 
    } 

    public void setWorkingHoursPerWeek(float workingHoursPerWeek) { 
     this.workingHoursPerWeek = workingHoursPerWeek; 
    } 

    public float getSalariesPerHour() { 
     return salariesPerHour; 
    } 

    public void setSalariesPerHour(float salariesPerHour) { 
     this.salariesPerHour = salariesPerHour; 
    } 

    public float getRegularPay() { 
     return regularPay; 
    } 

    public void setRegularPay(float regularPay) { 
     this.regularPay = regularPay; 
    } 

    public float getOvertimePay() { 
     return overtimePay; 
    } 

    public void setOvertimePay(float overtimePay) { 
     this.overtimePay = overtimePay; 
    } 

    @Override 
    public String toString() { 
     return "Employee{" + 
       "firstName='" + firstName + '\'' + 
       ", lastName='" + lastName + '\'' + 
       ", securityNum='" + securityNum + '\'' + 
       ", workingHoursPerWeek=" + workingHoursPerWeek + 
       ", salariesPerHour=" + salariesPerHour + 
       ", regularPay=" + regularPay + 
       ", overtimePay=" + overtimePay + 
       '}'; 
    } 
} 

и новая статическая функция open наряду main() для преобразования записей в List:

public static List<Employee> open(String fileName) { 
    List<Employee> employees; 
    BufferedReader bufferReader = null; 
    try{ 

     bufferReader = new BufferedReader(new FileReader(fileName)); 

     String line; 
     employees = new ArrayList<Employee>(); 
     while ((line = bufferReader.readLine()) != null) { 
      String[] tokens = line.split("\\s"); 
      Employee employee = new Employee(); 
      employee.setFirstName(tokens[0]); 
      employee.setLastName(tokens[1]); 
      employee.setSecurityNum(tokens[2]); 
      employee.setWorkingHoursPerWeek(Float.valueOf(tokens[3])); 
      employee.setSalariesPerHour(Float.valueOf(tokens[4])); 
      employees.add(employee); 
     } 

     return employees; 

    } catch(Exception e) { 
     System.out.println("Error while reading file line by line:" + e.getMessage()); 
    } 

    return new ArrayList<Employee>(); 
} 

в основном мы рассчитываем зарплату каждого сотрудника и распечатать их, наконец:

public static void main(String[] args){ 
    double rate; 
    double hoursWorked; 
    double regularPay; 
    double overtimePay; 
    final int FULL_WEEK = 40; 
    final double OT_RATE = 1.5; 
    List<Employee> employees = open("Your random file path goes here."); 
    for(Employee employee : employees) { 
     hoursWorked = employee.getWorkingHoursPerWeek(); 
     rate = employee.getSalariesPerHour(); 

     if(hoursWorked > FULL_WEEK) 
     { 
      employee.setRegularPay(FULL_WEEK * rate); 
      employee.setOvertimePay((hoursWorked - FULL_WEEK) * OT_RATE * rate); 
     } 
     else 
     { 
      employee.setRegularPay(hoursWorked * rate); 
      employee.setOvertimePay(0.0); 
     } 
    } 

    System.out.println(employees); 

} 
Смежные вопросы