title: java.util.Scanner; vs JOptionPane;
body: <p><strong>Please I would like know How would I implement JOptionPane instead of import java.util.Scanner;
  I also have 4 separate classes</strong>
  If i implement JOptionPane will it clean up the code I would also like to know any changes anyone would make. </p>
  
  <p><strong>Employee.Class</strong></p>
  
  <pre><code>import java.text.NumberFormat;
  import java.util.Scanner;
  
  public class Employee {
      public static int numEmployees = 0;
      protected String firstName;
      protected String lastName;
      protected char gender;
      protected int dependents;
      protected double annualSalary;
      private NumberFormat nf = NumberFormat.getCurrencyInstance();
      public Benefit benefit;
      private static Scanner scan;
  
      public Employee() {
          firstName = "";
          lastName = "";
          gender = 'U';
          dependents = 0;
          annualSalary = 40000;
          benefit = new Benefit();
          numEmployees++;
      }
  
      public Employee(String first, String last, char gen, int dep, Benefit benefit1) {
          this.firstName = first;
          this.lastName = last;
          this.gender = gen;
          this.annualSalary = 40000;
          this.dependents = dep;
          this.benefit = benefit1;
          numEmployees++;
      }
  
      public double calculatePay1() {
          return annualSalary / 52;
      }
  
      @Override
      public String toString() {
          StringBuilder sb = new StringBuilder();
          sb.append("First Name: ").append(firstName).append("\n");
          sb.append("Last Name: ").append(lastName).append("\n");
          sb.append("Gender: ").append(gender).append("\n");
          sb.append("Dependents: ").append(dependents).append("\n");
          sb.append("Annual Salary: ").append(nf.format(getAnnualSalary())).append("\n");
          sb.append("Weekly Pay: ").append(nf.format(calculatePay1())).append("\n");
          sb.append(benefit.toString());
          return sb.toString();
      }
      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 &lt;Gender&gt; void setGender(char gender) {
          this.gender = gender;
      }
  
      public &lt;Gender&gt; char getGender() {
          return gender;
      }
  
      public void setDependents(int dependents) {
          this.dependents = dependents;
      }
  
      public void setDependents(String dependents) {
          this.dependents = Integer.parseInt(dependents);
      }
  
      public int getDependents() {
          return dependents;
      }
  
      public void setAnnualSalary(double annualSalary) {
          this.annualSalary = annualSalary;
      }
  
      public void setAnnualSalary(String annualSalary) {
          this.annualSalary = Double.parseDouble(annualSalary);
      }
  
      public double getAnnualSalary() {
          return annualSalary;
      }
  
  
      public double calculatePay() {
          return annualSalary / 52;
      }   
  
      public double getAnnualSalary1() {
          return annualSalary;
      }
  
      public static void displayDivider(String outputTitle) {
          System.out.println("&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; " + outputTitle + " &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;");
      }
  
      public static String getInput(String inputType) {
          System.out.println("Enter the " + inputType + ": ");
          scan = new Scanner(System.in);
          String input = scan.next();
          return input;
      }
  
      public static int getNumEmployees() {
          return numEmployees;
      }
  
      public static void main(String[] args) {
          displayDivider("New Employee Information");
          Benefit benefit = new Benefit();
          Employee employee = new Employee("George", "Anderson", 'M', 5, benefit);
          System.out.println(employee.toString());
          System.out.println("Total employees: " + getNumEmployees());
          displayDivider("Hourly Temp Employee Information");
          Hourly hourly = new Hourly("Mary", "Nola", 'F', 5, 14, 45, "temp");
          System.out.println(hourly.toString());
          System.out.println("Total employees: " + getNumEmployees());
          displayDivider("Hourly Full Time Employee Information");
          Hourly hourly1 = new Hourly("Mary", "Nola", 'F', 5, 18, 42, "full time");
          System.out.println(hourly1.toString());
          System.out.println("Total employees: " + getNumEmployees());
          displayDivider("Hourly Part Time Employee Information");
          Hourly hourly11 = new Hourly("Mary", "Nola", 'F', 5, 18, 20, "part time");
          System.out.println(hourly11.toString());
          System.out.println("Total employees: " + getNumEmployees());
          displayDivider("Salaried Revised Employee Information");
          Benefit benefit1 = new Benefit("None", 500, 3);
          Salaried salaried = new Salaried("Frank", "Lucus", 'M', 5, 150000, benefit1, 3);
          System.out.println(salaried.toString());
          System.out.println("Total employees: " + getNumEmployees());    
          displayDivider("Salaried Employee Information");
          Benefit benefit11 = new Benefit("None", 500, 3);
          Salaried salaried1 = new Salaried("Frank", "Lucus", 'M', 5, 100000, benefit11, 2);
          System.out.println(salaried1.toString());
          System.out.println("Total employees: " + getNumEmployees());
      }
  }
  </code></pre>
  
  <p><strong>SALARIED.CLASS</strong></p>
  
  <pre><code>import java.util.Random;
  import java.util.Scanner;
  
  public class Salaried extends Employee {
  
      private static final int MIN_MANAGEMENT_LEVEL = 0;
      private static final int MAX_MANAGEMENT_LEVEL = 3;
      private static final int BONUS_PERCENT = 10;
      private int managementLevel;
      private Scanner in;
  
      public Salaried() {
          super();
          Random rand = new Random();
          managementLevel = rand.nextInt(4) + 1;
          if (managementLevel == 0) {
              System.out.println("Not Valid");
          }
          //numEmployees++;
      }
  
      private boolean validManagementLevel(int level) {
          return (MIN_MANAGEMENT_LEVEL &lt;= level &amp;&amp; level &lt;= MAX_MANAGEMENT_LEVEL);
      }
  
      public Salaried(String fname, String lname, char gen, int dep, 
          double sal, Benefit ben, int manLevel) 
      {
          super.firstName = fname;
          super.lastName = lname;
          super.gender = gen;
          super.dependents = dep;
          super.annualSalary = sal;
          super.benefit = ben;
          while (true) {
              if (!validManagementLevel(manLevel)) {
                  System.out.print("Invalid management level, please enter 
                  another management   level            value     in range [0,3]: ");
                  manLevel = new Scanner(System.in).nextInt();
              } else {
                  managementLevel = manLevel;
                  break;
              }
          }
          //numEmployees++;
      }
  
      public Salaried(double sal, int manLevel) {
          super.annualSalary = sal;
          while (true) {
              if (!validManagementLevel(manLevel)) {
                  System.out.print("Invalid management level, please enter another 
                  management level value   in range [0,3]: ");
                  in = new Scanner(System.in);
                  manLevel = in.nextInt();
              } else {
                  managementLevel = manLevel;
                  break;
              }
          }
      //      numEmployees++;
      }
  
      @Override
      public double calculatePay() {
          double  percentage = managementLevel * BONUS_PERCENT;
          return (1 + percentage/100.0) * annualSalary / 52;
      }
  
      @Override
      public String toString() {
          StringBuilder sb = new StringBuilder();
          sb.append(super.toString());
          sb.append("Management Level: ").append(managementLevel).append("\n");
          return sb.toString();
      }
  
  }
  </code></pre>
  
  <p><strong>Hourly.Class</strong></p>
  
  <pre><code>import java.util.Scanner;
  
  
  public class Hourly extends Employee {
      private static final double MIN_WAGE = 10;
      private static final double MAX_WAGE = 75;
      private static final double MIN_HOURS = 0;
      private static final double MAX_HOURS = 50;
      private double wage;
      private double hours;
      private String category;
      private Scanner in;
      private Scanner in2;
      private Scanner in3;
      private Scanner in4;
  
  
      public Hourly() {
          super();
          this.wage = 20;
          this.hours= 30;
          this.category = "full time";
          annualSalary = wage * hours * 52;
      }
  
      public Hourly(double wage_, double hours_, String category_) {
          while (true) {
              if (!validWage(wage_)) {
                  System.out.print("Invalid wage: ");
                  in2 = new Scanner(System.in);
                  wage_ = in2.nextDouble();
              } else {
                  this.wage = wage_;
                  break;
              }
          }
          while (true) {
              if (!validHour(hours_)) {
                  System.out.print("Invalid hours: ");
                  in = new Scanner(System.in);
                  hours_ = in.nextDouble();
              } else {
                  this.hours = hours_;
                  break;
              }
          }
          while (true) {
              if (!validCategory(category_)) {
                  System.out.print("Invalid category, please enter another category value: ");
                  category_ = new Scanner(System.in).next();
              } else {
                  this.category = category_;
                  break;
              }
          }
          annualSalary = wage * hours * 52;
          //numEmployees++;
      }
  
      public Hourly(String fname, String lname, char gen, int dep, double wage_,double hours_, String  category_) {
          super.firstName = fname;
          super.lastName = lname;
          super.gender = gen;
          super.dependents = dep;
          super.annualSalary = annualSalary;
          super.benefit = benefit;
          while (true) {
              if (!validWage(wage_)) {
                  System.out.print("Invalid wage : ");
                  in3 = new Scanner(System.in);
                  wage_ = in3.nextDouble();
              } else {
                  this.wage = wage_;
                  break;
              }
          }
          while (true) {
              if (!validHour(hours_)) {
                  System.out.print("Invalid hours : ");
                  hours_ = new Scanner(System.in).nextDouble();
              } else {
                  this.hours = hours_;
                  break;
              }
          }
          while (true) {
              if (!validCategory(category_)) {
                  System.out.print("Invalid category, please enter another category value: ");
                  in4 = new Scanner(System.in);
                  category_ = in4.next();
              } else {
                  this.category = category_;
                  break;
              }
          }
          annualSalary = wage * hours * 52;
          //numEmployees++;
      }
  
      private boolean validHour(double hour) {
          return (MIN_HOURS &lt;= hour &amp;&amp; hour &lt;= MAX_HOURS);
      }
  
      private boolean validWage(double wage) {
          return (MIN_WAGE &lt;= wage &amp;&amp; wage &lt;= MAX_WAGE);
      }
  
      private boolean validCategory(String category) {
          String[] categories = {"temp", "part time", "full time"};
          for (int i = 0; i &lt; categories.length; i++)
              if (category.equalsIgnoreCase(categories[i]))
                  return true;
          return false;       
      }
  
      public double calculatePay() {
          return annualSalary / 52;
      }       
  
      @Override
      public String toString() {
          StringBuilder sb = new StringBuilder();
          sb.append(super.toString());
          sb.append("Wage: ").append(wage).append("\n");
          sb.append("Hours: ").append(hours).append("\n");
          sb.append("Category: ").append(category).append("\n");
          return sb.toString();
      }
  }
  </code></pre>
  
  <p><strong>Benefit.Class</strong></p>
  
  <pre><code>public class Benefit {
      private String healthInsurance;
      private double lifeInsurance;
      private int vacationDays;
  
  
  
  public Benefit() {
          healthInsurance = "Full";
          lifeInsurance = 100;
          vacationDays = 5;
      }
  
      public Benefit(String health, double life, int vacation) {
          setHealthInsurance(health);
          setLifeInsurance(life);
          setVacation(vacation);
      }
  
      @Override
      public String toString() {
          StringBuilder sb = new StringBuilder();
          sb.append("Health Insurance: ").append(healthInsurance).append("\n");
          sb.append("Life Insurance: ").append(lifeInsurance).append("\n");
          sb.append("Vacation Days: ").append(vacationDays).append("\n");
          return sb.toString();
      }
  
      public void setHealthInsurance(String healthInsurance) {
          this.healthInsurance = healthInsurance;
      }
  
      public String getHealthInsurance() {
          return healthInsurance;
      }
  
      public void setLifeInsurance(double lifeInsurance) {
          this.lifeInsurance = lifeInsurance;
      }
  
      public double getLifeInsurance() {
          return lifeInsurance;
      }
  
      public void setVacation(int vacation) {
          this.vacationDays = vacation;
      }
  
      public int getVacation() {
          return vacationDays;
      }
  
      public void displayBenefit() {
          this.toString();
  
      }
  }
  </code></pre>