2017-11-24 3 views
-1

[전류 출력] [1] 급여 클래스가 제대로 12분의 120,000 출력을 인쇄하고 왜 알아야하지만, 경영진과 시간당 클래스가 직원의 텍스트 파일에서 읽고 정확히 같은 double 값을 인쇄하는 [직원] [2]. 이 [문제 UML은] [3] 내가 시간별 이그제큐티브 클래스 에 제대로 슈퍼 키워드를 사용하고 있는지 알고 하시겠습니까 같은 문제 UML은 ******************* 보인다 *************************************************** ***********추상 및 상속 클래스

//Driver class reads from staff.txt file  
     import java.io.File; 
      import java.util.Scanner; 
      public class StaffDemo{ 
       private static int size; 
       private static String[][] employeeInfo; 
       private static StaffMember[] staffMember; 
       public static void main(String[] args){ 
       createStaff(); 
       //System.out.println(staffMember[3].getPaid()); 
       payAll(); 
       } 

        public static void createStaff(){ 
        try{ 
         File file = new File("staff.txt"); 
         Scanner s = new Scanner(file); 
         size = Integer.parseInt(s.next()); 
         //System.out.println(size); 
         employeeInfo = new String[size][5]; 
         for(int i =0;i<size;i++){ 
         for(int j=0;j<5;j++){ 
          employeeInfo[i][j]=s.next(); 
         } 
         } 
         int i=0; 
         staffMember = new StaffMember[size]; 
         while(i<size){ 
         if(employeeInfo[i][0].equals("Salaried")){ 
          StaffMember staffSalaried = new Salaried(Integer.parseInt(employeeInfo[i][1]),employeeInfo[i][2],employeeInfo[i][3],Double.valueOf(employeeInfo[i][4])); 
          staffSalaried.setEmployeeType(employeeInfo[i][0]); 
          staffMember[i] = staffSalaried; 
         }else if(employeeInfo[i][0].equals("Volunteer")){ 
          StaffMember staffVolunteer = new Volunteer(Integer.parseInt(employeeInfo[i][1]),employeeInfo[i][2],employeeInfo[i][3],Double.valueOf(employeeInfo[i][4]));   
          staffVolunteer.setEmployeeType(employeeInfo[i][0]); 
          staffMember[i] = staffVolunteer; 
         }else if(employeeInfo[i][0].equals("Hourly")){ 
          StaffMember staffHourly = new Volunteer(Integer.parseInt(employeeInfo[i][1]),employeeInfo[i][2],employeeInfo[i][3],Double.valueOf(employeeInfo[i][4]));   
          staffHourly.setEmployeeType(employeeInfo[i][0]); 
          staffMember[i] = staffHourly; 
         }else if(employeeInfo[i][0].equals("Executive")){ 
          StaffMember staffExecutive = new Volunteer(Integer.parseInt(employeeInfo[i][1]),employeeInfo[i][2],employeeInfo[i][3],Double.valueOf(employeeInfo[i][4]));   
          staffExecutive.setEmployeeType(employeeInfo[i][0]);   
          staffMember[i] = staffExecutive;   
         } 
         i++; 
         } 
        } 
        catch(Exception e){ 
         System.out.println("no file found"); 
        } 
        } 
        public static void payAll(){ 
        for(int k=0;k<size;k++) 
         System.out.println(staffMember[k]); 
        } 
       } 

    ******************************************************************************* 


     //Executive class extends Salaried, suppose to add 0.1*payRate*bonus 
      public class Executive extends Salaried{ 
       private double bonus=0; 
       private double monthlySalary; 
       public Executive(int idNumber, String firstName, String lastName, double payRate){ 
       super(idNumber,firstName,lastName, payRate); 
       this.setMonthlyRate(); 
       } 
       public void setMonthlyRate(){ 
       this.monthlySalary=super.payRate*0.1*bonus; 
       } 
       public double getMonthlyRate(){ 
       return this.monthlySalary; 
       } 
       public void addBonus(double bonus){ 
       this.bonus+=bonus; 
       } 
       public double getBonus(){ 
       return this.bonus; 
       } 
       @Override 
       public double getPaid(){ 
       return this.getMonthlyRate(); 
       } 
       @Override 
       public String toString(){ 
       return super.toString()+this.getPaid(); 
       } 
      } 

    ******************************************************************************** 

     // volunteer class prints out payrate equals zero 
     public class Volunteer extends StaffMember{ 
      private double payRate; 
      public Volunteer(int idNumber, String firstName, String lastName, double payRate){ 
      super(idNumber,firstName,lastName); 
      this.setMonthlyRate(payRate); 
      } 
      public void setMonthlyRate(double payRate){ 
      this.payRate=payRate; 
      } 
      public double getMonthlyRate(){ 
      return this.payRate; 
      } 
      @Override 
      public double getPaid(){ 
      return getMonthlyRate(); 
      } 
      public String toString(){ 
      return super.toString()+getPaid(); 
      } 
     } 

    ******************************************************************************** 
     //Hourly class extends StaffMember, it suppose to do payRate*80.00 
     public class Hourly extends StaffMember{ 
      private double payRate; 
      public Hourly(int idNumber, String firstName, String lastName, double payRate){ 
      super(idNumber,firstName,lastName); 
      this.setMonthlyRate(payRate); 
      } 
      public void setMonthlyRate(double payRate){ 
      this.payRate=payRate*80.00; 
      } 
      public double getMonthlyRate(){ 
      return this.payRate; 
      } 
      @Override 
      public double getPaid(){ 
      return getMonthlyRate(); 
      } 
      @Override 
      public String toString(){ 
      return super.toString()+getMonthlyRate(); 
      } 
     } 

    ******************************************************************************** 
     //salaried 
      public class Salaried extends StaffMember{ 
       public double payRate; 
       public Salaried(int idNumber, String firstName, String lastName, double payRate){ 
       super(idNumber, firstName, lastName); 
       this.setMonthlyRate(payRate); 
       } 
       public double getMonthlyRate(){ 
       return this.payRate; 
       } 
       public void setMonthlyRate(double payRate){ 
       this.payRate=payRate/12.00; 
       } 
       @Override 
       public double getPaid(){ 
       return getMonthlyRate(); 
       } 
       public String toString(){ 
       return super.toString()+getMonthlyRate(); 
       } 
      } 

    ******************************************************************************** 
     //StaffMember is abstract class 
     public abstract class StaffMember{ 
      private String firstName; 
      private String lastName; 
      private int idNumber; 
      private String employeeType; 

      public StaffMember(int idNumber, String firstName, String lastName){ 
      this.idNumber=idNumber; 
      this.firstName=firstName; 
      this.lastName=lastName; 
      } 
      public int getIdNumber(){ 
      return this.idNumber; 
      } 
      public void setIdNumber(int idNumber){ 
      this.idNumber=idNumber; 
      } 
      public String getFirstName(){ 
      return this.firstName; 
      } 
      public void setFirstName(String firstName){ 
      this.firstName=firstName; 
      } 
      public String getLastName(){ 
      return this.lastName; 
      } 
      public void setLastName(String lastName){ 
      this.lastName=lastName; 
      } 
      public String getEmployeeType(){ 
      return this.employeeType; 
      } 
      public void setEmployeeType(String employeeType){ 
      this.employeeType=employeeType; 
      } 
      @Override 
      public String toString(){ 
      return getFirstName()+" "+getLastName()+" ("+getEmployeeType()+"): $"; 
      } 

      public abstract double getPaid(); 
      public abstract double getMonthlyRate(); 
      public abstract void setMonthlyRate(double i); 
     } 



    [1]: https://i.stack.imgur.com/rF54p.png 
    [2]: https://i.stack.imgur.com/ohblq.png 
    [3]: https://i.stack.imgur.com/UezAe.png 
+2

너무 많은 코드. 문제를 재현하는 ** ** ** ** 완전한 ** 예제를 제시하십시오. 문제 코드 만 포함하고 주요 방법, 하드 코딩 된 값, 예상 및 실제 출력이 있어야합니다. –

+0

게시물 [mcve] .. – user1803551

답변

0

"시간당"과 "임원"모두 자원 봉사자입니까? 다른

경우 (employeeInfo [I] [0] .equals ("시간별")) {

StaffMember staffHourly = 새로운 자원 (...)
... 다른

경우

(employeeInfo [I] [0] .equals) ("행정") {

StaffMember staffExecutive = 새로운 자원 (...)

관련 문제