+1 (315) 557-6473 

Create a Program to Implement Wage Calculator in Java Assignment Solution.


Instructions

Objective
Write a java assignment program to implement wage calculator.

Requirements and Specifications

program to implement wage calculator in java

Source Code

package project1;

import java.util.Scanner;

public class HourlyWageCalculator {

// Declare the global constant variables here

// Use the names given in the instructions

final static double HOUR_RATE = 15.00;

final static double BONUS_RATE = 2.00;

final static double OVERLOAD_PERCENT = 1.5;

final static double REGULAR_HOURS = 40.0;

public static void main(String[] args) {

// I am starting out this method for you

Scanner scnr = new Scanner(System.in);

Scanner hourInput = new Scanner(System.in);

int weekNumber = 0;

String answer = "y";

double[] weekHours;

// use a while loop to run program

// this loop should give user the option to calculate wages more than once

while (answer.equals("y")) {

// inside this loop

// ask user to enter values

// call methods getInputFromUser and calculatePayForWeek

// at the end of the loop ask user if they want to do another calculation

do {

//gets a valid week worked

System.out.print("Enter week worked: ");

weekNumber = scnr.nextInt();

if ((weekNumber >= 1 && weekNumber <= 52) == false) {

System.out.println("Week must be between 1 and 52, please try again");

}

} while ((weekNumber >= 1 && weekNumber <= 52) == false);

//calls the getInputFromUser and calculatePayForWeek methods to get

//the number of hours the user worked and calculate the users pay off that

weekHours = getInputFromUser(hourInput, weekNumber);

calculatePayForWeek(weekNumber, weekHours);

System.out.print("Would you like to calculate pay for another week? y/n: ");

answer = scnr.next();

//prints a thank you message if the user dosn't want to keep calculating wages

if (answer.equals("n")) {

System.out.println("");

System.out.println("Thanks for using the wage calculator tool.");

}

}

}

// *** declare methods beginning here

// * write getInputFromUser method here

public static double[] getInputFromUser(Scanner input, int weekNum) {

double[] hoursAsDouble;

String getHours;

String[] hoursAsString;

//get valid input

do {

System.out.printf("Enter hours for week %d: ", weekNum);

getHours = input.nextLine();

hoursAsString = getHours.split(" ");//fix me

} while (validateInput(hoursAsString) == false);

//convert from string to double and return new array

hoursAsDouble = convertStringArrayToDouble(hoursAsString);

return hoursAsDouble;

}

// * write validateInput method here

public static boolean validateInput(String[] input) {

// complete all validation cases for the method

//declare the variables

int i;

int elementCounter = 0;

// enter code to check for seven values

// loops through all the elements

for (i = 0; i < input.length; i++) {

++elementCounter;

}

//checks if there's seven elements

if (elementCounter != 7) {

System.out.println("Input must have seven numbers.");

return false;

}

// here is the code to check values are all numeric

// we will see exceptions soon...

for (i = 0; i < input.length; i++)

try {

Double.valueOf(input[i]); // this method returns a double value which I am ignoring as I just want to see if it fails

}

catch (NumberFormatException e) { // this is how java tells us a value was not numeric

System.out.println("Input included invalid numbers. Try again please.");

return false;

}

// enter code to check all positive values

for (i = 0; i < input.length; i++) {

//convert string array to double one

double[] convertedInput = convertStringArrayToDouble(input);

//check if the values positive and under or equal to 15

if (convertedInput[i] < 0) {

System.out.println("Worked hours must have values between 0 and 15.");

return false;

}

if (convertedInput[i] > 15) {

System.out.println("Worked hours must have values between 0 and 15.");

return false;

}

}

// if we make to the end, then all checks are good, return true

return true;

}

// * write convertStringArrayToDouble method here

public static double[] convertStringArrayToDouble(String[] strInput) {

int arraySize = 7;

double[] newDoubleInput = new double[arraySize];

for (int i = 0; i < strInput.length; ++i) {

newDoubleInput[i] = Double.parseDouble(strInput[i]);//converts from string to double

}

//returns the new double array

return newDoubleInput;

}

// * write calculatePayForWeek method here

public static void calculatePayForWeek(int weekNum, double[] hrsWorked) {

double totalHrsWorked = getTotalHours(hrsWorked);

double regularPay;

double regularBonusPay;

double overtimeHrs;

double regularOvertimePay;

double bonusOvertimePay;

double bonusRate = HOUR_RATE + BONUS_RATE;

double regularOvertimeRate = HOUR_RATE * OVERLOAD_PERCENT;

double bonusOvertimeRate = bonusRate * OVERLOAD_PERCENT;

double regularTotalPay;

double bonusTotalPay;

if (totalHrsWorked <= REGULAR_HOURS) {

regularPay = totalHrsWorked * HOUR_RATE;

regularBonusPay = totalHrsWorked * (HOUR_RATE + BONUS_RATE);

overtimeHrs = 0.0;

regularOvertimePay = 0.0;

bonusOvertimePay = 0.0;

regularTotalPay = regularPay;

bonusTotalPay = regularBonusPay;

if ((weekNum <= 2) || ((weekNum >= 44) && (weekNum <= 52))) {

System.out.printf("Week %d receives a bonus of $2.00 per hour\n", weekNum);

System.out.printf("Your total pay for week %d is: $%.2f\n", weekNum, bonusTotalPay);

System.out.printf("You worked a total of %.2f hours\n", totalHrsWorked);

System.out.println("Here is your summary:");

System.out.printf(" Base hours worked: %.2f at $%.2f\n", totalHrsWorked, bonusRate);

System.out.printf(" Base pay: $%.2f\n", regularBonusPay);

System.out.printf(" Overtime hours worked: %.2f at $%.2f\n", overtimeHrs, bonusOvertimeRate);

System.out.printf(" Overtime pay: $%.2f\n", bonusOvertimePay);

System.out.println("");

}

else {

System.out.printf("Your total pay for week %d is: $%.2f\n", weekNum, regularTotalPay);

System.out.printf("You worked a total of %.2f hours\n", totalHrsWorked);

System.out.println("Here is your summary:");

System.out.printf(" Base hours worked: %.2f at $%.2f\n", totalHrsWorked, HOUR_RATE);

System.out.printf(" Base pay: $%.2f\n", regularPay);

System.out.printf(" Overtime hours worked: %.2f at $%.2f\n", overtimeHrs, regularOvertimeRate);

System.out.printf(" Overtime pay: $%.2f\n", regularOvertimePay);

System.out.println("");

}

}

//checks and calculates if you worked overtime

else if (totalHrsWorked > REGULAR_HOURS) {

overtimeHrs = totalHrsWorked - REGULAR_HOURS;

regularOvertimePay = overtimeHrs * regularOvertimeRate;

bonusOvertimePay = overtimeHrs * bonusOvertimeRate;

regularPay = REGULAR_HOURS * HOUR_RATE;

regularBonusPay = REGULAR_HOURS * (HOUR_RATE + BONUS_RATE);

regularTotalPay = regularPay + regularOvertimePay;

bonusTotalPay = regularBonusPay + bonusOvertimePay;

if ((weekNum <= 2) || ((weekNum >= 44) && (weekNum <= 52))) {

System.out.printf("Week %d receives a bonus of $2.00 per hour\n", weekNum);

System.out.printf("Your total pay for week %d is: $%.2f\n", weekNum, bonusTotalPay);

System.out.printf("You worked a total of %.2f hours\n", totalHrsWorked);

System.out.println("Here is your summary:");

System.out.printf(" Base hours worked: 40 at $%.2f\n", bonusRate);

System.out.printf(" Base pay: $%.2f\n", regularBonusPay);

System.out.printf(" Overtime hours worked: %.2f at $%.2f\n", overtimeHrs, bonusOvertimeRate);

System.out.printf(" Overtime pay: $%.2f\n", bonusOvertimePay);

System.out.println("");

}

else {

System.out.printf("Your total pay for week %d is: $%.2f\n", weekNum, regularTotalPay);

System.out.printf("You worked a total of %.2f hours\n", totalHrsWorked);

System.out.println("Here is your summary:");

System.out.printf(" Base hours worked: 40 at $%.2f\n", HOUR_RATE);

System.out.printf(" Base pay: $%.2f\n", regularPay);

System.out.printf(" Overtime hours worked: %.2f at $%.2f\n", overtimeHrs, regularOvertimeRate);

System.out.printf(" Overtime pay: $%.2f\n", regularOvertimePay);

System.out.println("");

}

}

}

// * write getTotalHours method here

public static double getTotalHours(double[] listOfHrs) {

double totalHrs = 0;

int i;

for (i = 0; i < listOfHrs.length; ++i) {

totalHrs = totalHrs + listOfHrs[i];

}

return totalHrs;

}

}