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

Exception Project Modify the Employee and ProductionWorker classes from Programm

ID: 3821931 • Letter: E

Question

Exception Project

Modify the Employee and ProductionWorker classes from Programming Challenge 1 of Chapter 10 so that they throw exceptions when the following errors occur:

The Employee class should throw an exception named InvalidEmployeeNumber when it receives an invalid employee number.

The ProductionWorker class should throw an exception named InvalidShift when it receives an invalid shift.

The ProductionWorker class should throw an exception named InvalidPayRate when it receives a negative number for the hourly pay rate.

Write the InvalidEmployeeNumber, InvalidShift, and InvalidPayRate exception classes. Write a test program that demonstrates how each exception condition works. (java)

Employee.java

public class employee
{
   private String name;
   private String date;
   private String empnumber;



   public employee()
   {
       name = " ";
       date = " ";
       empnumber = " ";
   }


   public employee(String name, String date, String empnumber)
   {
       this.name = name;
       this.date = date;
       this.empnumber = empnumber;
   }

   public String getName()
   {
       return name;
   }

   public String getDate()
   {
       return date;
   }

   public String getNumber()
   {
       return empnumber;
   }

   public String toString()
   {
       return "Name: " + name + " Employee Number: " + empnumber + " Hire Date: " + date;
    }
}

productionworker.java



public class productionworker extends employee
{
   public static final int DAYSHIFT = 1;
   public static final int NIGHTSHIFT = 2;

   private int shift;
   private double payrate;


    public productionworker()
    {
       super();
       shift = DAYSHIFT;
       payrate = 0.0;
   }

   public productionworker(String n, String d, String e, int shift, double payrate)
   {
       super(n,d,e);
       this.shift = shift;
       this.payrate = payrate;
   }

   public int getShift()
   {
       return shift;
   }

   public double payrate()
   {
       return payrate;
   }

   public String toString()
   {
       String str = super.toString();

       if(shift == DAYSHIFT)
       {
           str += "day shift";
       }

       else if(shift == NIGHTSHIFT)
       {
           str += "night shift";
       }

       return str += "hourly payrate:" + payrate;

   }
}

Explanation / Answer

Employee.java

public class Employee
{
private String name;
private String date;
private String empnumber;



public Employee()
{
name = " ";
date = " ";
empnumber = " ";
}


public Employee(String name, String date, String empnumber) throws InvalidEmployeeNumber
{
this.name = name;
this.date = date;
setEmpnumber(empnumber);
  
}

public String getName()
{
return name;
}

public String getDate()
{
return date;
}

public String getNumber()
{
return empnumber;
}

   public void setEmpnumber(String empnumber) throws InvalidEmployeeNumber {
       if (empnumber.length() != 5)
       {
  
               throw new InvalidEmployeeNumber();
      
       }
   else if ((!Character.isDigit(empnumber.charAt(0))) ||
   (!Character.isDigit(empnumber.charAt(1))) ||
   (!Character.isDigit(empnumber.charAt(2))) ||
   (empnumber.charAt (3) != '-') ||
   (Character.toUpperCase(empnumber.charAt(4)) < 'A') ||
   (Character.toUpperCase(empnumber.charAt(4)) > 'M'))
   {
     
                       throw new InvalidEmployeeNumber();
                  
   }
   else
   {
       this.empnumber = empnumber;
   }
   }


   public String toString()
{
return "Name: " + name + " Employee Number: " + empnumber + " Hire Date: " + date;
}
}

_________________

Productionworker.java

public class Productionworker extends Employee {
   public static final int DAYSHIFT = 1;
   public static final int NIGHTSHIFT = 2;
     
   private int shift;
   private double payrate;
     
     
   public Productionworker()
   {
   super();
   shift = DAYSHIFT;
   payrate = 0.0;
   }
     
   public Productionworker(String n, String d, String e, int shift, double payrate) throws Exception
   {
   super(n,d,e);
   setShift(shift);
   setPayrate(payrate);

   }
     
   private void setPayrate(double payrate) throws InvalidPayRate {
           if(payrate<0)
               throw new InvalidPayRate();
           else
               this.payrate=payrate;
          
       }

       private void setShift(int shift) throws InvalidShift {
           if(shift ==1 || shift ==2)
               this.payrate=payrate;
           else
               throw new InvalidShift();

          
       }

       public int getShift()
   {
   return shift;
   }
     
   public double payrate()
   {
   return payrate;
   }
     
   public String toString()
   {
   String str = super.toString();
     
   if(shift == DAYSHIFT)
   {
   str += "day shift";
   }
     
   else if(shift == NIGHTSHIFT)
   {
   str += "night shift";
   }
     
   return str += " hourly payrate:" + payrate;
     
   }

}

___________________

InvalidEmployeeNumber.java

public class InvalidEmployeeNumber extends Exception {
   public InvalidEmployeeNumber()
   {
       System.out.println(":: Invalid Employee Number ::");
   }

}

____________________

InvalidPayRate.java

public class InvalidPayRate extends Exception {
   public InvalidPayRate()
   {
       System.out.println(":: Invalid pay rate ::");
   }

}

___________________

InvalidShift.java

public class InvalidShift extends Exception {
public InvalidShift()
{
   System.out.println(":: Invalid Shift ::");
}
}

____________________

package org.students;

import java.util.Scanner;

public class Test {


   public static void main(String[] args) {
       String name;
       String date;
       String empnumber;

       Productionworker pw=null;
       //Scanner object is used to get the inputs entered by the user
               Scanner sc=new Scanner(System.in);
              
               while(true)
               {
                   System.out.print("Enter Employee no :");
                   empnumber=sc.next();
                   sc.nextLine();
                   System.out.print("Enter Employee Name :");
                   name=sc.nextLine();
                   System.out.print("Enter Joining Date :");
                   date=sc.next();
                  
                  
                   System.out.print("Enter Shift :");
                   int shift=sc.nextInt();
                  
                   System.out.print("Enter Payrate:");
                   double payrate=sc.nextDouble();
                  
                  
                  
                  
                   try {
                      
                       pw=new Productionworker(name, date, empnumber, shift, payrate);
                       break;
                   }
                   catch(Exception e)
                   {
                       continue;
                   }
               }


          

               System.out.println(pw.toString());
              
              
   }

}

___________________

Output:

Enter Employee no :123A
Enter Employee Name :Williams
Enter Joining Date :12/12/2006
Enter Shift :2
Enter Payrate:45000
:: Invalid Employee Number ::
Enter Employee no :123-A
Enter Employee Name :Williams
Enter Joining Date :12/12/2006
Enter Shift :3
Enter Payrate:45000
:: Invalid Shift ::
Enter Employee no :123-A
Enter Employee Name :Williams
Enter Joining Date :12/12/2006
Enter Shift :2
Enter Payrate:-45000
:: Invalid pay rate ::
Enter Employee no :123-A
Enter Employee Name :Willaims
Enter Joining Date :12/12/2006
Enter Shift :2
Enter Payrate:45000
Name: Willaims
Employee Number: 123-A
Hire Date: 12/12/2006 hourly payrate:45000.0

___________________Thank You