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

How to get rid of exceptions? In order to populate the array, you will need to s

ID: 3852568 • Letter: H

Question

How to get rid of exceptions?

In order to populate the array, you will need to split() each String on the (,) character so you can access each individual value of data. Based on the first value (e.g., #) your method will know whether to create a new Manager, HourlyWorker, or CommissionWorker object. Once created, populate the object with the remaining values then store it in the array. Finally, iterate through the array of employees using the enhanced for loop syntax, and print out each employee in the following format:

Manager:

    Steve Davis     $2000

Commission Employee:

   John Kanet      $1500 (Base salary: $800, sales: $7000, Commission rate: 10%)

Hourly Worker:

Thomas Hill    $1100 (Hourly wage: $20, hours worked: 50)

this is what the text file says:

#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

this is what I have completed so far:

public abstract class Employee { //WE ARE NOT ALLOWED TO CHANGE THE EMPLOYEE CLASS AT ALL
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();
}

________________________________________________________

public class Manager extends Employee {

private double weeklySalary;
public Manager(String firstName, String lastName, double weeklySalary) {
super(firstName, lastName);
this.weeklySalary = weeklySalary;
}
public double getWeeklySalary() {
return weeklySalary;
}
public void setWeeklySalary(double weeklySalary) {
this.weeklySalary = weeklySalary;
}

public double earnings() {

return getWeeklySalary();

}

}

_____________________________________

public class HourlyWorker extends Employee {
private int hoursWorked;
private double wage;

public HourlyWorker(String firstName, String lastName, int hoursWorked,double wage)
{

super(firstName, lastName);
this.hoursWorked = hoursWorked;
this.wage = wage;
}
public int getHoursWorked() {
return hoursWorked;
}
public double getWage() {
return wage;
}
public void setHoursWorked(int hoursWorked) {
this.hoursWorked = hoursWorked;
}
public void setWage(int wage) {
this.wage = wage;
}
public double earnings() {
double pay;
if (hoursWorked > 40) {
pay = (40 * wage) + (1.5 * (hoursWorked - 40) * wage);
} else {
pay = wage * hoursWorked;
}
return pay;
}

}

_________________________________________

public class CommissionEmployee extends Employee {

double weeklySalary, commissionRate, 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;
}
public double getWeeklySalary() {
return weeklySalary;
}
public double getCommissionRate() {
return commissionRate;
}
public double getWeeklySales() {
return weeklySales;
}
public void setWeeklySalary(double weeklySalary) {
this.weeklySalary = weeklySalary;
}
public void setCommissionRate(double commissionRate) {
this.commissionRate = commissionRate;
}
public void setWeeklySales(double weeklySales) {
this.weeklySales = weeklySales;
}
public double earnings() {
return weeklySalary + (commissionRate * weeklySales);

}

}

____________________________________________________________

import java.io.File;

import java.util.*;

public class Payroll2 {

public static void main(String[] args) {

Scanner scanner = null;

try {

Scanner input = new Scanner(new File(args[0]));

  

Employee[] employees;

int n = 0;

if (input.hasNext())

n = Integer.parseInt(input.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);// this will remove the first letter of last name, you should remove the substring part

String firstName = lineArr[0];

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]);

// }

for (Employee j: employees) { // enhanced for loop

if(j instanceof Manager) // checking if he is a manager

{

System.out.println("Manager:");

System.out.println(j.getFirstName()+ " "+j.getLastName()+" $"+((Manager)j).getWeeklySalary() );

}

else if(j instanceof CommissionEmployee)// checking if he is a CommissionEmployee

{

System.out.println("CommissionEmployee:");

System.out.println(j.getFirstName()+ " "+j.getLastName()+" $(Base salary:"

+((CommissionEmployee)j).weeklySalary+",sales: $"+((CommissionEmployee)j).weeklySales+",Commission rate: "+((CommissionEmployee)j).commissionRate+"%)");

}

else

{

System.out.println("Hourly Worker:");

double wage = ((HourlyWorker)j).getWage();

int hours = ((HourlyWorker)j).getHoursWorked();

double earnings = ((HourlyWorker)j).earnings();

System.out.println(j.getFirstName()+ " "+j.getLastName()+" $"+earnings+"(Hourly wage: $"+wage+",hours worked: "+hours+")" );

}

  

  

}

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

}

_____________________________________________________

im getting exception errors, please help me!

java.lang.NumberFormatException: For input string: "#Steve, Davis, 2000"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:569)

at java.lang.Integer.parseInt(Integer.java:615)

at Payroll2.main(Payroll2.java:25)

Explanation / Answer

Hi,

I have modified the code slightly and highlighted the code changes below. Only changes in below java code. Please create a file with below steps given then program will work smootly.

Employee.txt

2
#Steve, Davis, 2000
@Doe, John, 1000, 5

Payroll2.java

import java.io.File;

import java.util.*;

public class Payroll2 {
public static void main(String[] args) {
try {
Scanner input = new Scanner(new File(args[0]));
  
Employee[] employees;
int n = 0;
if (input.hasNext())
n = Integer.parseInt(input.nextLine());
employees = new Employee[n];
char empType;
int i = 0;
while (input.hasNext()) {
String line = input.nextLine();
empType = line.charAt(0);
System.out.println(line);
String lineArr[] = line.split(",");
// String firstName = lineArr[0].substring(1);// this will remove the first letter of last name, you should remove the substring part
String firstName = lineArr[0];
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]);
// }
for (Employee j: employees) { // enhanced for loop
if(j instanceof Manager) // checking if he is a manager
{
System.out.println("Manager:");
System.out.println(j.getFirstName()+ " "+j.getLastName()+" $"+((Manager)j).getWeeklySalary() );
}
else if(j instanceof CommissionEmployee)// checking if he is a CommissionEmployee
{
System.out.println("CommissionEmployee:");
System.out.println(j.getFirstName()+ " "+j.getLastName()+" $(Base salary:"
+((CommissionEmployee)j).weeklySalary+",sales: $"+((CommissionEmployee)j).weeklySales+",Commission rate: "+((CommissionEmployee)j).commissionRate+"%)");
}
else
{
System.out.println("Hourly Worker:");
double wage = ((HourlyWorker)j).getWage();
int hours = ((HourlyWorker)j).getHoursWorked();
double earnings = ((HourlyWorker)j).earnings();
System.out.println(j.getFirstName()+ " "+j.getLastName()+" $"+earnings+"(Hourly wage: $"+wage+",hours worked: "+hours+")" );
}
  
  
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
}

Output:

#Steve, Davis, 2000
@Doe, John, 1000, 5
Manager:
#Steve Davis $2000.0
Hourly Worker:
@Doe John $5000.0(Hourly wage: $1000.0,hours worked: 5)

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote