Answer:
Here is the PayRoll class:
// PayRoll.java
package payroll; // creates payroll package for project
public class Payroll { //class definition
private String name; //private String type member variable to store name
private String id; //private String type member variable to store id
private int hours; //private int type member variable to store work hours
private double rate; //private double type member variable to store payrate of the employee
public Payroll() { //no argument constructor of PayRoll
name = ""; //initialize name field
id = ""; //initialize id field
hours = 0; //initialize hours field
rate = 0.0; } // initialize rate field
public Payroll(String NAME, String ID, int HOURS, double RATE) { //parameterized constructor
setName(NAME); //sets name value
setId(ID); //sets id value
setHours(HOURS); //sets hours value
setRate(RATE); } //sets rate value
public void setName(String NAME) { //mutator method to set name
if(NAME.equals("")) { //if name field is empty
throw new IllegalArgumentException("An employee name should not be empty."); } //throws exception
name = NAME; }
public void setId(String ID) { //mutator method to set id
if(ID.length() != 3 || !Character.isLetter(ID.charAt(0))|| !Character.isDigit(ID.charAt(1)) || !Character.isDigit(ID.charAt(2))) { //if statement checks if the length of the id is not 3, or first character of id is not a letter, or second or third character of id is not a digit
throw new IllegalArgumentException("An employee id should have the form LNN."); } //throws exception
id = ID; }
public void setHours(int HOURS) { //mutator method to set hours
if(HOURS < 0 || HOURS > 84) { //checks if working hours are less than 0 or greater than 84
throw new IllegalArgumentException("An employee's hours should neither be negative nor greater than 84"); } //throws exception
hours = HOURS; }
public void setRate(double RATE) { //mutator method to set rate
if(RATE < 0 || RATE > 25.00) { //checks if pay rate is less than 0 or greater than 25.00
throw new IllegalArgumentException("An employee's pay rate should neither be negative nor greater than 25.00"); } //throws exception
rate = RATE; }
public String getName() { //accessor method to get value of name
return name; } //returns the current value of name
public String getId() { //accessor method to get value of id
return id; } //returns the current value of id
public int getHours() { //accessor method to get value of hours
return hours; } //returns the current value of hours
public double getRate() { //accessor method to get value of rate
return rate; } } //returns the current value of rate
Step-by-step explanation:
Here is the Main() class:
import java.util.Scanner; //to accept input from user
public class Main { //Main class definition
public static void main(String[] args) {//start of main() function
Payroll pay = new Payroll(); //creates object i.e. pay of PayRoll class
Scanner sc = new Scanner(System.in); //creates Scanner class object
String name,id; //declare variables to hold name and id
int hour; //declare variable to store hour
double rate; //declare variable to store pay rate
System.out.print("Enter the employee's name: "); //prompts user to enter employee name
name = sc.nextLine(); //reads input value of name
pay.setName(name); //use pay object to access mutator method to set name to input name value
System.out.print("Enter employee's id (LNN form): "); //prompts user to enter employee id
id = sc.nextLine(); //reads input value of id
pay.setId(id); //use pay object to access mutator method to set id to input id
System.out.print("Enter the employee's working hours: "); //prompts user to enter employee hours
hour = sc.nextInt(); //reads input value of hour
pay.setHours(hour); // set input hours
System.out.print("Enter the employee's pay rate: "); //prompts user to enter employee pay rate
rate = sc.nextInt(); //reads input value of rate
pay.setRate(rate); // set pay rate
System.out.println("Employee Data: \\"); //displays the employee data
System.out.println("Employee's Name: " + pay.getName()); //calls getName accessor method to get current value of name field and display it
System.out.println("Employee's ID: " + pay.getId()); //calls getId accessor method to get current value of id field and displays it
System.out.println("Employee's Hours: " + pay.getHours()); //calls getHours accessor method to get current value of hours field and displays it
System.out.println("Employee's Pay Rate: " + pay.getRate()); //calls getRate accessor method to get current value of rate field and displays it
}
}
Here IllegalArgumentException is thrown which is used to show that a method is passed an illegal argument.
The screenshot of program and its output is attached.