public static void main(String[] args) {
    Employee[] empList = new Employee[6]; // 2 salray, 2 hourly, 2 bonus

    // populate salary emps
    SalariedEmployee s1 = new SalariedEmployee("Helena", "Handbasket", "Theatre Manager");
    s1.setEmpType('S');
    s1.setPayFrequency('S');
    s1.setAnnualSalary(75000.00);
    empList[0] = s1;
    SalariedEmployee s2 = new SalariedEmployee("Rayne", "Bow", "Lighting Manager");
    s2.setEmpType('S');
    s2.setPayFrequency('S');
    s2.setAnnualSalary(100000.00);
    empList[1] = s2;

    // populate hourly emps
    HourlyEmployee h1 = new HourlyEmployee("Leah", "Tard", "Dancer");
    h1.setHourlyRate(20.00);
    h1.setHoursWorked(100.0);
    empList[2] = h1;
    HourlyEmployee h2 = new HourlyEmployee("Cat", "Arwall", "Singer");
    h2.setHourlyRate(22.00);
    h2.setHoursWorked(80.0);
    empList[3] = h2;

    // populate salary plus bonus emps
    SalaryPlusBonusEmployee b1 = new SalaryPlusBonusEmployee("Bob", "Fosse", "Choreographer");
    b1.setEmpType('B');
    b1.setPayFrequency('S');
    b1.setAnnualSalary(200000.00);
    b1.setPayoutBonus(true);
    b1.setBonusAmt(3000.00);
    empList[4] = b1;
    SalaryPlusBonusEmployee b2 = new SalaryPlusBonusEmployee("Ima", "Good", "Artistic Director");
    b2.setEmpType('B');
    b2.setPayFrequency('M');
    b2.setAnnualSalary(150000.00);
    b2.setPayoutBonus(false);
    empList[5] = b2;

    DecimalFormat dollar = new DecimalFormat("#,##0.00");
    char freqInd;
    String payFreq;
    for (Employee emps : empList) {
      System.out.println("--------------------------------------");
      System.out.println("Name: " + emps.getLastName() + ", " + emps.getFirstName());
      System.out.println("Job Title: " + emps.getJobTitle());
      freqInd = emps.getPayFrequency();
      switch (freqInd) {
        case 'S':
          payFreq = "SEMI-MONTHLY";
          break;
        case 'M':
          payFreq = "MONTHLY";
          break;
        case 'B':
        default:
          payFreq = "BIWEEKLY";
      }
      System.out.println("Employee is paid " + payFreq);

      if (emps instanceof SalaryPlusBonusEmployee) {
        System.out.println("Employee is SALARY + BONUS");
        SalaryPlusBonusEmployee empBon = (SalaryPlusBonusEmployee) emps;
        System.out.println("Annual Salary: $" + dollar.format(empBon.getAnnualSalary()));
        System.out.println("Bonus Amount: $" + dollar.format(empBon.getBonusAmt()));
        System.out.println("Pay Period Amount: $" + dollar.format(empBon.calcPeriodPay()));
      } else if (emps instanceof SalariedEmployee) {
        System.out.println("Employee is SALARIED");
        SalariedEmployee empSal = (SalariedEmployee) emps;
        System.out.println("Annual Salary: $" + dollar.format(empSal.getAnnualSalary()));
        System.out.println("Pay Period Amount: $" + dollar.format(empSal.calcPeriodPay()));
      } else if (emps instanceof HourlyEmployee) {
        System.out.println("Employee is HOURLY");
        HourlyEmployee empHour = (HourlyEmployee) emps;
        System.out.println("Hourly Rate: " + dollar.format(empHour.getHourlyRate()));
        System.out.println("Hours Worked: " + empHour.getHoursWorked());
        System.out.println("Pay Period Amount: $" + dollar.format(empHour.calcPeriodPay()));
      }
    }
  }