All pastes #2021804 Raw Edit

Anonymous

public text v1 · immutable
#2021804 ·published 2010-12-17 05:05 UTC
rendered paste body
import java.util.*;
/**
*Main class Payroll that creates new employees based on user input,
*also contains validation. A LOT
*/
public class Payroll {
	public static void main (String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int current = 1;// number used for the current employee
		boolean cont = true; // boolean value for continuing the loop until the user enters parameter 6 to exit the program
		ArrayList<Company> employees = new ArrayList<Company>(); // ArrayList is used to store all employees whether salaried or hourly
		while (cont == true) { //the most outter loop of the program used to re-instantiate the menu after options are done
			System.out.println("What do you want to do?");
			System.out.printf("\t1\tCreate a new employee\n");
			System.out.printf("\t2\tSet pay\n");
			System.out.printf("\t3\tShow weekly pay\n");
			System.out.printf("\t4\tShow annual pay\n");
			System.out.printf("\t5\tShow summary\n");
			System.out.printf("\t6\tQuit\n");
			System.out.printf("=====>");
			
			String input = scan.next();//collects the next sequence of input based on what the user enters
			char in = input.charAt(0);//stores the first character of the input used for teh switch statement
			
			/*
			*Most outter switch statement that contains cases 1-6 based on what the first character is
			*/
			switch (in) {
			
				case '1': //Case one for a new employee creation, anther case is the used based on the first charachter the user enters
							//It executes different commands based on whether the user enters s or h or a different first character
								{
								scan.nextLine();
								System.out.print("What type of employee would you like to create <Salaried or Hourly>? ");
								String resp;
								resp = scan.next();
								char r = resp.charAt(0);
								boolean invalidresp = true;
								if (r == 's' || r == 'S' || r == 'h' || r == 'H') {
									invalidresp = false;
								}
								else invalidresp = true;
								while(invalidresp == true) {
									System.out.println("***Please enter either 'salaried' or 'hourly'.");
									System.out.print("What type of employee would you like to create <Salaried or Hourly>? ");
									resp = scan.next();
									System.out.println();
									r = resp.charAt(0);

									if (r == 's' || r == 'S' || r == 'h' || r == 'H') {
										invalidresp = false;
									}
									else invalidresp = true;
								}
								scan.nextLine();
								switch (r) {

								case 'H':
								case 'h': {
									System.out.print("Please enter the name: ");
									String name = scan.nextLine();
									System.out.println();
									System.out.print("Please enter the social security number: ");
									String ssN = scan.next();
									System.out.println();
									System.out.print("Please enter the hourly rate of pay: ");
									boolean hasdouble = true;
									if (scan.hasNextDouble() == false) {
										hasdouble = false;
									}
									String hourlyRate = scan.next();
									
									while (hasdouble == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextDouble() == false) {
											hasdouble = false;
										}
										else hasdouble = true;
										hourlyRate = scan.next();
									}
									double hrRate = Double.parseDouble(hourlyRate);
										while(hrRate <= 0) {
											System.out.println("***Please enter a number > 0.");
											System.out.print("Please enter the hourly rate of pay: ");

									 hasdouble = true;
										if (scan.hasNextDouble() == false) {
										hasdouble = false;
									}
									hourlyRate = scan.next();
									while (hasdouble == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextDouble() == false) {
											hasdouble = false;
										}
										else hasdouble = true;
											hourlyRate = scan.next();
									}



											hrRate = Double.parseDouble(hourlyRate);
										}
									System.out.print("Please enter the average number of hours worked per week: ");
									
									
									boolean awdouble = true;
									if (scan.hasNextDouble() == false) {
										awdouble = false;
									}
									String awRate = scan.next();
									
									while (awdouble == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextDouble() == false) {
											awdouble = false;
										}
										else awdouble = true;
										awRate = scan.next();
									}
									double awHours = Double.parseDouble(awRate);
			
										while(awHours <= 0) {
											System.out.println("***Please enter a number > 0.");
											System.out.print("Please enter the average number of hours worked per week: ");
											awHours = scan.nextDouble();
										}
									employees.add(new Hourly(name,ssN,awHours));	
									//Hourly emp(current) = new Hourly(name, ssN, awHours);
									employees.get(employees.size()-1).setPay(hrRate);
									//emp(current).setPay(hrRate);
									System.out.printf("Employee " + current + " has been created.\n\n");
									current++;
									break;
									}
								
								
							
								
								case 'S':
								case 's': {
									System.out.print("Please enter the name: ");
									String name = scan.nextLine();
									System.out.println();
									System.out.print("Please enter the social security number: ");
									String ssN = scan.next();
									System.out.print("Please enter the annual pay: ");
									
									
									
									boolean anndouble = true;
									if (scan.hasNextDouble() == false) {
										anndouble = false;
									}
									String annRate = scan.next();
									
									while (anndouble == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextDouble() == false) {
											anndouble = false;
										}
										else anndouble = true;
										annRate = scan.next();
									}
									double annSalary = Double.parseDouble(annRate);
									
									while (annSalary <= 0) {
										System.out.println("***Please enter a number > 0.");
										System.out.print("Please enter the annual pay: ");
										
										
														
									anndouble = true;
										if (scan.hasNextDouble() == false) {
											anndouble = false;
										}
									annRate = scan.next();
									
									while (anndouble == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextDouble() == false) {
											anndouble = false;
										}
										else anndouble = true;
											annRate = scan.next();
									}
										annSalary = Double.parseDouble(annRate);

									}
									
									employees.add(new Salaried(name,ssN,annSalary));
									//Salaried emp(current) = new Salaried(name, ssN, annSalary);
									System.out.println("Employee " + current + " has been created");
									current++;
									break;
								}
								default: System.out.println("ERROR Bad option: " + resp + " please try again");
							}
							break;
				}
				case '2': {
								if(employees.size() == 0) {
									System.out.println("***ERROR: No employees have been instantiated, please try again");
									break;
								}
				
								System.out.print("Which employee do you wish to use <enter 1 to " + employees.size() + ">? ");
								System.out.println();
								

								boolean isInt = true;
									if (scan.hasNextInt() == false) {
										isInt = false;
									}
							

									String intNumb = scan.next();	
									if (intNumb == null || intNumb == "") {
										isInt = false;
									}
									while (isInt == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextInt() == true) {
											isInt = true;
										}
										else if (intNumb == null) isInt = false;
										else if (intNumb == "") isInt = false;
										else isInt = false;
										intNumb = scan.next();
									}
									int employeeNumb = Integer.parseInt(intNumb);

								
								
								while(employeeNumb == 0 || employeeNumb < 0 || employeeNumb > employees.size()) {
									System.out.println("***ERROR Please enter an employee number from 1 to " + employees.size() + ": ");
									System.out.println();
									

									isInt = true;
									if (scan.hasNextInt() == false) {
										isInt = false;
									}
							

									intNumb = scan.next();	
									if (intNumb == null || intNumb == "") {
										isInt = false;
									}
									while (isInt == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextInt() == true) {
											isInt = true;
										}
										else if (intNumb == null) isInt = false;
										else if (intNumb == "") isInt = false;
										else isInt = false;
										intNumb = scan.next();
									}
									employeeNumb = Integer.parseInt(intNumb);				
					
								}
								
								employeeNumb --;
								System.out.println();
								System.out.print("How much would you like to set the annual pay to? ");
													
									boolean anndouble = true;
										if (scan.hasNextDouble() == false) {
											anndouble = false;
										}
								String	annRate = scan.next();
									
									while (anndouble == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextDouble() == false) {
											anndouble = false;
										}
										else anndouble = true;
											annRate = scan.next();
									}
								double annPay = Double.parseDouble(annRate);

									while(annPay <=0) {
									System.out.println("*** ERROR Please enter an amount > 0.");
									System.out.println();
									System.out.print("How much would you like to set the annual pay to? ");
									
									
										anndouble = true;
										if (scan.hasNextDouble() == false) {
											anndouble = false;
										}
									annRate = scan.next();
									
									while (anndouble == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextDouble() == false) {
											anndouble = false;
										}
										else anndouble = true;
											annRate = scan.next();
									}
								annPay = Double.parseDouble(annRate);
								}
								System.out.println();
								employees.get(employeeNumb).setPay(annPay);
								break;
							}
								
				case '3': {
								System.out.println();
								if(employees.size() == 0) {
									System.out.println("***ERROR: No employees have been instantiated, please try again");
									break;
								}
								
								System.out.print("Which employee do you wish to use <enter 1 to " + employees.size() + ">? ");
								
								
									boolean isInt = true;
									if (scan.hasNextInt() == false) {
										isInt = false;
									}
							

									String intNumb = scan.next();	
									if (intNumb == null || intNumb == "") {
										isInt = false;
									}
									while (isInt == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextInt() == true) {
											isInt = true;
										}
										else if (intNumb == null) isInt = false;
										else if (intNumb == "") isInt = false;
										else isInt = false;
										intNumb = scan.next();
									}
									int employeeNumb = Integer.parseInt(intNumb);
									
								System.out.println();
								while (employeeNumb <= 0 || employeeNumb > employees.size()) {
									System.out.print("*** ERROR: Please enter an employee number from 1 to " + employees.size() + ": ");
									isInt = true;
									if (scan.hasNextInt() == false) {
										isInt = false;
									}
							

									intNumb = scan.next();	
									if (intNumb == null || intNumb == "") {
										isInt = false;
									}
									while (isInt == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextInt() == true) {
											isInt = true;
										}
										else if (intNumb == null) isInt = false;
										else if (intNumb == "") isInt = false;
										else isInt = false;
										intNumb = scan.next();
									}
									employeeNumb = Integer.parseInt(intNumb);
									System.out.println();
								}
								
								employeeNumb--;
								System.out.println();
								System.out.println(String.format("The weekly pay is $%,.2f", employees.get(employeeNumb).calcWeeklyPay()));
								System.out.println();
								break;
							}
								
				case '4':	
							{
								System.out.println();
								if(employees.size() == 0) {
									System.out.println("***ERROR: No employees have been instantiated, please try again");
									break;
								}
								
								System.out.print("Which employee do you wish to use <enter 1 to " + employees.size() + ">? ");
								
									boolean isInt = true;
									if (scan.hasNextInt() == false) {
										isInt = false;
									}
							

									String intNumb = scan.next();	
									if (intNumb == null || intNumb == "") {
										isInt = false;
									}
									while (isInt == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextInt() == true) {
											isInt = true;
										}
										else if (intNumb == null) isInt = false;
										else if (intNumb == "") isInt = false;
										else isInt = false;
										intNumb = scan.next();
									}
									int employeeNumb = Integer.parseInt(intNumb);

								System.out.println();
								while (employeeNumb <= 0 || employeeNumb > employees.size()) {
									System.out.print("*** ERROR: Please enter an employee number from 1 to " + employees.size() + ": ");
									isInt = true;
									if (scan.hasNextInt() == false) {
										isInt = false;
									}
									intNumb = scan.next();	
									if (intNumb == null || intNumb == "") {
										isInt = false;
									}
									while (isInt == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextInt() == true) {
											isInt = true;
										}
										else if (intNumb == null) isInt = false;
										else if (intNumb == "") isInt = false;
										else isInt = false;
										intNumb = scan.next();
									}
									employeeNumb = Integer.parseInt(intNumb);

									System.out.println();
								}
								
								employeeNumb--;
								System.out.println();
								System.out.printf(String.format("The annual pay is $%,.2f", employees.get(employeeNumb).calcAnnualPay()));
								System.out.println();
								break;
							}
								
				case '5': {	
								System.out.println();
								if(employees.size() == 0) {
									System.out.println("***ERROR: No employees have been instantiated, please try again");
									break;
								}
								
								System.out.print("Which employee do you wish to use <enter 1 to " + employees.size() + ">? ");
									boolean isInt = true;
									if (scan.hasNextInt() == false) {
										isInt = false;
									}
							

									String intNumb = scan.next();	
									if (intNumb == null || intNumb == "") {
										isInt = false;
									}
									while (isInt == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextInt() == true) {
											isInt = true;
										}
										else if (intNumb == null) isInt = false;
										else if (intNumb == "") isInt = false;
										else isInt = false;
										intNumb = scan.next();
									}
									int employeeNumb = Integer.parseInt(intNumb);

								System.out.println();
								while (employeeNumb <= 0 || employeeNumb > employees.size()) {
									System.out.print("*** ERROR: Please enter an employee number from 1 to " + employees.size() + ": ");
									isInt = true;
									if (scan.hasNextInt() == false) {
										isInt = false;
									}
							

									intNumb = scan.next();	
									if (intNumb == null || intNumb == "") {
										isInt = false;
									}
									while (isInt == false) {
										System.out.print("Pleae enter a number: ");
										if (scan.hasNextInt() == true) {
											isInt = true;
										}
										else if (intNumb == null) isInt = false;
										else if (intNumb == "") isInt = false;
										else isInt = false;
										intNumb = scan.next();
									}
									employeeNumb = Integer.parseInt(intNumb);

									System.out.println();
								}
								
								employeeNumb--;
								System.out.println();
								System.out.printf(employees.get(employeeNumb).toString());
								System.out.println();
								break;
							}
								
				case '6':	System.exit(0);
								break;
								
				default:		System.out.println("ERROR Bad Option: " + input + ", please try again.");
								System.out.println();
								break;
								
			  }
		}
	}
}