Employee Working Hour Calculator
Following are two arrays, time_started, time_ended, of an employee’s working hours over ten business days (Monday to Friday and the following Monday to Friday). Times are based on a 24-hour clock (between 0 and 24).
double []time_started = {2, 4, 5, 7, 8, 8, 10, 11, 19, 22};
double []time_ended = {8, 9, 22, 18, 20, 23, 22, 20, 23, 24};
The hourly pay of the employee is $25, for hours worked between 9 am and 6 pm. Use the pay multiplier in the table shown below to calculate the hourly pay for hours worked throughout the day.
Times based on a 24 clock Pay Multiplier
12 am to 6 am (0 to 6) 20%
6 am to 9 am (6 to 9) 10%
9 am to 6 pm (9 to 18) 0%
6 pm to 9 pm (18 to 21) 10%
9 pm to 12 pm (21 to 24) 20%
Sample of Expected output:
Time work started = 4
Time work ended = 16
Daily pay = (6 – 4) 25 (1 + 20/100) + (9 – 6) 25 (1 + 10/100) + (16 – 9) 25 = $317.50
Write a class file called lastname_empData. Write a constructor to initialize the two arrays.
Also, write a method called getDailyPay to compute and return each of the ten daily pay of the employee and a method called getTotalPay to compute and return the sum of the daily pays.
Write a lastname_demo file. Pass the two arrays into lastname_empData class and print each of the daily pays and the total pay of the employee after 10 days.
It is also acceptable to write the entire code in a single file but both methods, getDailyPay, and getTotalPay must be included.
Note: lastname is your lastname. Last name = Dominguez
Hint: your constructor should like follows:public lastname_empData (etcetc){
}
and not like this: public emp data (etcetc){
}
Please pay attention, I am not going to do this for you when correcting assignments.
Solution:
Lastname_empData
public class lastname_empData {
private int[] time_started;
private int[] time_ended;
private int[][] pay_multipliers;
private double hourly_pay;
public lastname_empData(int[] t_started, int[] t_ended, int[][] pay_mult, double rate)
{
time_started = t_started;
time_ended = t_ended;
pay_multipliers = pay_mult;
hourly_pay = rate;
}
public double getDailyPay(int startTime, int endTime)
{
double pay = 0.0;
// get number of days worked
int hours = (startTime - endTime);
double start = startTime;
for(int i = 0; i < pay_multipliers.length; i++)
{
double from = pay_multipliers[i][0];
double to = pay_multipliers[i][1];
double multiplier = pay_multipliers[i][2];
if(to > endTime)
to = endTime;
if(start >= from && start<= to)
{
pay += (to - start)*hourly_pay*(1.0 + multiplier/100.0);
start = to;
}
}
return pay;
}
public double getTotalPay(int startTime, int endTime)
{
double total_pay = 0;
for(int i = 0; i < time_started.length; i++)
{
total_pay += getDailyPay(time_started[i], time_ended[i]);
}
return total_pay;
}
}
App:
public class App {
public static void main(String[] args) throws Exception {
int[]time_ended = {8,9,22,18,20,23,22,20,23,24};
int[]time_started = {2, 4, 5, 7, 8, 8, 10, 11, 19, 22};
int[][]pay_multipliers = {
{0, 6, 20},
{6, 9, 10},
{9, 18, 0},
{18, 21, 10},
{21, 24, 20}
};
double rate = 25;
lastname_empData payment = new lastname_empData(time_started, time_ended, pay_multipliers, rate);
System.out.println(payment.getDailyPay(4, 16));
System.out.println(payment.getTotalPay(4, 16));
}
}