Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

accept the file name from command argument list: Scanner input=new Scanner(new F

ID: 3852314 • Letter: A

Question

accept the file name from command argument list: Scanner input=new Scanner(new File(args[0]));

  

Provided Employee File:

public abstract class Employee {

private String firstName;
private String lastName;
private static int employeeID=100;

public Employee(String firstName, String lastName) {
setFirstName(firstName);
setLastName(lastName);
employeeID++;
}

public void setFirstName(String firstName){
this.firstName=firstName;
}
public String getFirstName(){
return firstName;
}
public void setLastName(String lastName){
this.lastName=lastName;
}
public String getLastName(){
return lastName;
}

public int getEmplyeeID(){
return employeeID;
}
public String toString(){
return String.format("%20s%20s", firstName, lastName);
}
public abstract double earnings();
}

Provided payroll2.txt file:

#Steve, Davis, 2000
*John, Kanet, 800, 7000, 0.10
@Thomas, Hill,20,50
*Lisa, Green,800,6000,0.10
*Chasidy , Funderburk,1000,5000,0.08
@Kayleigh , Bertrand, 25, 45
*Zane, Eckhoff,1800,900, 0.09
@Teressa, Bitterman, 15,35
*Yuri, Viera, 600, 5000,0.10

Explanation / Answer

package com.emp;

public abstract class Employee {
   private String firstName;
   private String lastName;
   private static int employeeID = 100;

   public Employee(String firstName, String lastName) {
       setFirstName(firstName);
       setLastName(lastName);
       employeeID++;
   }

   public void setFirstName(String firstName) {
       this.firstName = firstName;
   }

   public String getFirstName() {
       return firstName;
   }

   public void setLastName(String lastName) {
       this.lastName = lastName;
   }

   public String getLastName() {
       return lastName;
   }

   public int getEmplyeeID() {
       return employeeID;
   }

   public String toString() {
   return String.format("%s %s %.2f", firstName, lastName, earnings());
   }

   public abstract double earnings();
}

package com.emp;

public class Manager extends Employee {

   private double weeklySalary;

   /**
   * @param firstName
   * @param lastName
   * @param employeeID
   * @param weeklySalary
   */
   public Manager(String firstName, String lastName, double weeklySalary) {
       super(firstName, lastName);
       this.weeklySalary = weeklySalary;
   }

   /**
   * @return the weeklySalary
   */
   public double getWeeklySalary() {
       return weeklySalary;
   }

   /**
   * @param weeklySalary
   * the weeklySalary to set
   */
   public void setWeeklySalary(double weeklySalary) {
       this.weeklySalary = weeklySalary;
   }

   @Override
   public double earnings() {
       // TODO Auto-generated method stub

       return getWeeklySalary();
   }

}

package com.emp;

public class CommissionEmployee extends Employee {

   double weeklySalary, commissionRate, weeklySales;

   /**
   * @param firstName
   * @param lastName
   * @param employeeID
   * @param weeklySalary
   * @param commissionRate
   * @param weeklySales
   */
   public CommissionEmployee(String firstName, String lastName,
           double weeklySalary, double commissionRate, double weeklySales) {
       super(firstName, lastName);
       this.weeklySalary = weeklySalary;
       this.commissionRate = commissionRate;
       this.weeklySales = weeklySales;
   }

   /**
   * @return the weeklySalary
   */
   public double getWeeklySalary() {
       return weeklySalary;
   }

   /**
   * @return the commissionRate
   */
   public double getCommissionRate() {
       return commissionRate;
   }

   /**
   * @return the weeklySales
   */
   public double getWeeklySales() {
       return weeklySales;
   }

   /**
   * @param weeklySalary
   * the weeklySalary to set
   */
   public void setWeeklySalary(double weeklySalary) {
       this.weeklySalary = weeklySalary;
   }

   /**
   * @param commissionRate
   * the commissionRate to set
   */
   public void setCommissionRate(double commissionRate) {
       this.commissionRate = commissionRate;
   }

   /**
   * @param weeklySales
   * the weeklySales to set
   */
   public void setWeeklySales(double weeklySales) {
       this.weeklySales = weeklySales;
   }

   @Override
   public double earnings() {
       // TODO Auto-generated method stub
       return weeklySalary + (commissionRate * weeklySales);
   }

}

package com.emp;

public class HourlyWorker extends Employee {

   private double hoursWorked;
   private int wage;

   /**
   * @param firstName
   * @param lastName
   * @param employeeID
   * @param hoursWorked
   * @param wage
   */
   public HourlyWorker(String firstName, String lastName, double hoursWorked,
           int wage) {
       super(firstName, lastName);
       this.hoursWorked = hoursWorked;
       this.wage = wage;
   }

   /**
   * @return the hoursWorked
   */
   public double getHoursWorked() {
       return hoursWorked;
   }

   /**
   * @return the wage
   */
   public int getWage() {
       return wage;
   }

   /**
   * @param hoursWorked
   * the hoursWorked to set
   */
   public void setHoursWorked(double hoursWorked) {
       this.hoursWorked = hoursWorked;
   }

   /**
   * @param wage
   * the wage to set
   */
   public void setWage(int wage) {
       this.wage = wage;
   }

   @Override
   public double earnings() {
       // TODO Auto-generated method stub
       double pay;
       if (hoursWorked > 40) {
           pay = (40 * wage) + (1.5 * (hoursWorked - 40) * wage);

       } else {

           pay = wage * hoursWorked;
       }
       return pay;
   }

}

package com.emp;

import java.io.File;
import java.util.Scanner;

public class Payroll {

   public static void main(String[] args) {

       Scanner scanner = null;
       try {
           scanner = new Scanner(new File("inputdata.txt"));
           Employee[] employees;
           int n = 0;
           if (scanner.hasNext())
               n = Integer.parseInt(scanner.nextLine());
           employees = new Employee[n];
           char empType;
           int i = 0;
           while (scanner.hasNext()) {

               String line = scanner.nextLine();

               empType = line.charAt(0);
//System.out.println(line);
               String lineArr[] = line.split(",");
               String firstName = lineArr[0].substring(1);
               String lastName = lineArr[1];
               switch (empType) {
               case '#': {
                   double weeklySalary = Double.parseDouble(lineArr[2].trim());
                   Manager managers = new Manager(firstName, lastName,
                           weeklySalary);
                   employees[i] = managers;

               }
                   break;
               case '@': {
                   int wage = Integer.parseInt(lineArr[2].trim());
                   int hoursWorked = Integer.parseInt(lineArr[3].trim());
                   HourlyWorker hourlyWorker = new HourlyWorker(firstName,
                           lastName, hoursWorked, wage);
                   employees[i] = hourlyWorker;

               }

                   break;
               case '*': {

                   double weeklySalary = Double.parseDouble(lineArr[2].trim());
                   double weeklySales = Double.parseDouble(lineArr[3].trim());
                   double commissionRate = Double.parseDouble(lineArr[4]
                           .trim());

                   CommissionEmployee commissionEmployee = new CommissionEmployee(
                           firstName, lastName, weeklySalary, commissionRate,
                           weeklySales);
                   employees[i] = commissionEmployee;
               }

                   break;
               default:
                   break;
               }
               i++;

           }
           for (int j = 0; j < employees.length; j++) {
               System.out.println(employees[j].getClass() + ": "
                       + employees[j]);
           }
       } catch (Exception e) {
           // TODO: handle exception
           e.printStackTrace();
       }
   }
}

inputdata.txt

9
#Steve, Davis, 2000
*John, Kanet, 800, 7000, 0.10
@Thomas, Hill,20,50
*Lisa, Green,800,6000,0.10
*Chasidy , Funderburk,1000,5000,0.08
@Kayleigh,Bertrand, 25, 45
*Zane, Eckhoff,1800,900, 0.09
@Teressa, Bitterman, 15,35
*Yuri, Viera, 600, 5000,0.10

OUTPUT:

class com.emp.Manager: Steve Davis 2000.00
class com.emp.CommissionEmployee: John Kanet 1500.00
class com.emp.HourlyWorker: Thomas Hill 1100.00
class com.emp.CommissionEmployee: Lisa Green 1400.00
class com.emp.CommissionEmployee: Chasidy Funderburk 1400.00
class com.emp.HourlyWorker: Kayleigh Bertrand 1187.50
class com.emp.CommissionEmployee: Zane Eckhoff 1881.00
class com.emp.HourlyWorker: Teressa Bitterman 525.00
class com.emp.CommissionEmployee: Yuri Viera 1100.00