2014-08-08 4 views
-1

Пожалуйста, я хотел бы знать, как бы реализовать JOptionPane вместо импорта java.util.Scanner; У меня также есть 4 отдельных класса Если я реализую JOptionPane, он очистит код, я также хотел бы знать любые изменения, которые кто-либо мог бы сделать.java.util.Scanner; vs JOptionPane;

Employee.Class

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 <Gender> void setGender(char gender) { 
     this.gender = gender; 
    } 

    public <Gender> 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(">>>>>>>>>>>>>>> " + outputTitle + " <<<<<<<<<<<<<<<"); 
    } 

    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()); 
    } 
} 

SALARIED.CLASS

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 <= level && level <= 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(); 
    } 

} 

Hourly.Class

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 <= hour && hour <= MAX_HOURS); 
    } 

    private boolean validWage(double wage) { 
     return (MIN_WAGE <= wage && wage <= MAX_WAGE); 
    } 

    private boolean validCategory(String category) { 
     String[] categories = {"temp", "part time", "full time"}; 
     for (int i = 0; i < 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(); 
    } 
} 

Benefit.Class

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

    } 
} 
+0

'общественного обугленного getGender()' Это дженерик с типом параметр «Пол»? Если да, то почему? Он никогда не использовался. Почему у вас есть параметр типа в методах getGender() и setGender()? – nrubin29

+0

@ nrubin29 umm на самом деле я не уверен, что это было изменение ошибки, которое я создал, я не понял его, но он исчез красным X – idk

+0

Просто удалите '' из этих двух методов. – nrubin29

ответ

2

Начните с взглянуть на How to Make Dialogs ...

То, что вы в основном хотят, чтобы использовать JOptionPane.showInputDialog, который может быть использован для запроса на использование для ввода ...

Да, есть несколько разновидностей, но давайте просто сохраним его и посмотрим на JOptionPane.showInputDialog(Object)

JavaDocs сообщает нам, что .. .

сообщение - Объект для отображения

Возвраты: ввод
пользователя, или нулевое значение, пользователь отменил вход

Таким образом, из этого мы могли бы использовать что-то вроде ...

String value = JOptionPane.showInputDialog("What is your name?"); 
if (value != null) { 
    System.out.println("Hello " + value); 
} else { 
    System.out.println("Hello no name"); 
} 

который отображает ...

Dialog

Теперь, если мы посмотрим на код, вы можете заменить использование scan с ...

public static String getInput(String inputType) { 
    String input = JOptionPane.showInputDialog("Enter the " + inputType + ": "); 
    return input; 
} 

В качестве примера ...

Теперь, что я мог бы рекомендовать создает простой вспомогательный метод, который может использоваться для запроса пользователя в одной строке кода, например ...

public class InputHelper { 
    public static String promptUser(String prompt) { 
     String input = JOptionPane.showInputDialog(prompt); 
     return input; 
    } 
} 

, которые могут быть использованы что-то вроде ...

String value = InputHelper.promptUser("Please enter the hours worked"); 
hours_ = Double.parse(value); 

И это, где это получить грязно, как вы теперь должны действительный ввод пользователя.

Вы можете расширить идею InputHelper делать автоматические преобразования и повторно запрашивать у пользователя, если значение недействительно ... как идея

+0

+1, хороший и хорошо написанный ответ. –

+0

@AfzaalAhmadZeeshan Надеюсь, я осветил основы, достаточные для того, чтобы ОП попытался самостоятельно: P – MadProgrammer

+0

Это то, что для переполнения стека, для чего-то вместо вашего attemp, я думаю, что oDesk и Elance разработаны! :) Нанять _MadProgrammer_: D –

1

Это гораздо проще, чем вы думаете, если вы попробуете. Привыкайте к чтению API Java.

http://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html

Даже есть примеры.

String input; 
JOptionPane jop=new JOptionPane(); 
input=jop.showInputDialog("Question i want to ask"); 

System.out.println(input); 
+0

Из справочного центра SO: «Рекомендуются ссылки на внешние ресурсы, но, пожалуйста, добавьте контекст вокруг ссылки, чтобы у ваших коллег было некоторое представление о том, что это такое и почему оно есть. наиболее важная часть важной ссылки, если целевой сайт недоступен или постоянно отключается ». Можете ли вы включить пример в свой ответ? – skrrgwasme

+0

Я думаю, что этот ответ приветствуется здесь, потому что он привел пример из ссылки. Тем не менее я хотел бы попросить @MarGar добавить несколько деталей к сообщению :) Это поможет OP и будущему читателю понять, что вы пытались ответить здесь. :) –

+0

oh man thank u для этого мне очень помогает – idk

Смежные вопросы