Advertisement
Guest User

Untitled

a guest
Jul 1st, 2016
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.03 KB | None | 0 0
  1. package com.company.mankind;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6.  
  7. public class MainMankind {
  8.     public static void main(String[] args) throws IOException {
  9.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  10.  
  11.         String[] student = reader.readLine().split("\\s+");
  12.         String firstName = student[0];
  13.         String lastName = student[1];
  14.         String facultyNumber = student[2];
  15.  
  16.         String[] worker = reader.readLine().split("\\s+");
  17.         String firstNameWorker = worker[0];
  18.         String lastNameWorker = worker[1];
  19.         double salary = Double.parseDouble(worker[2]);
  20.         double workingHours = Double.parseDouble(worker[3]);
  21.  
  22.         try {
  23.             Human student1 = new Student(firstName, lastName, facultyNumber);
  24.             Human worker1 = new Worker(firstNameWorker, lastNameWorker, salary, workingHours);
  25.             System.out.println(student1.toString());
  26.             System.out.println(worker1.toString());
  27.         } catch (IllegalArgumentException ex) {
  28.             System.out.println(ex.getMessage());
  29.             return;
  30.         }
  31.     }
  32. }
  33. //Human
  34. public class Human {
  35.     private static final int FIRST_NAME_LENGTH = 4;
  36.  
  37.     private String firstName;
  38.     private String lastName;
  39.  
  40.     public Human(String firstName, String lastName) {
  41.         this.setFirstName(firstName);
  42.         this.setLastName(lastName);
  43.     }
  44.  
  45.     protected void setFirstName(String firstName) {
  46.         char[] fName = firstName.toCharArray();
  47.         if (Character.toLowerCase(fName[0]) == fName[0]) {
  48.             throw new IllegalArgumentException("Expected upper case letter! Argument: firstName");
  49.         }
  50.         if (firstName.length() < FIRST_NAME_LENGTH) {
  51.             throw new IllegalArgumentException("Expected length at least 4 symbols! Argument: firstName");
  52.         }
  53.  
  54.         this.firstName = firstName;
  55.     }
  56.  
  57.     protected void setLastName(String lastName) {
  58.         char[] lName = lastName.toCharArray();
  59.         if (Character.toLowerCase(lName[0]) == lName[0]) {
  60.             throw new IllegalArgumentException("Expected upper case letter! Argument: lastName");
  61.         }
  62.  
  63.         this.lastName = lastName;
  64.     }
  65.  
  66.     @Override
  67.     public String toString() {
  68.         StringBuilder sb = new StringBuilder();
  69.         sb.append(String.format("First Name: %s%n", this.firstName));
  70.         sb.append(String.format("Last Name: %s%n", this.lastName));
  71.         return sb.toString();
  72.  
  73.     }
  74. }
  75. //Student
  76. public class Student extends Human {
  77.     private static final int FACULTY_NUMBER_MIN = 5;
  78.     private static final int FACULTY_NUMBER_MAX = 10;
  79.     private static final int LAST_NAME_LENGTH = 3;
  80.  
  81.     private String facultyNumber;
  82.  
  83.     public Student(String firstName, String lastName, String facultyNumber) {
  84.         super(firstName, lastName);
  85.         this.setFacultyNumber(facultyNumber);
  86.     }
  87.  
  88.     protected void setFacultyNumber(String facultyNumber) {
  89.         if (facultyNumber.length() < FACULTY_NUMBER_MIN || facultyNumber.length() > FACULTY_NUMBER_MAX) {
  90.             throw new IllegalArgumentException("Invalid faculty number!");
  91.         }
  92.         char[] chars = facultyNumber.toCharArray();
  93.         for (char aChar : chars) {
  94.             if (!Character.isLetterOrDigit(aChar)) {
  95.                 throw new IllegalArgumentException("Invalid faculty number!");
  96.             }
  97.         }
  98.         this.facultyNumber = facultyNumber;
  99.     }
  100.  
  101.     @Override
  102.     protected void setLastName(String lastName) {
  103.         if (lastName.length() < LAST_NAME_LENGTH) {
  104.             throw new IllegalArgumentException("Expected length at least 3 symbols! Argument: lastName");
  105.         }
  106.         super.setLastName(lastName);
  107.     }
  108.  
  109.     @Override
  110.     public String toString() {
  111.  
  112.         StringBuilder sb = new StringBuilder();
  113.         sb.append(super.toString());
  114.         sb.append(String.format("Faculty number: %s%n", this.facultyNumber));
  115.         return sb.toString();
  116.     }
  117. }
  118. //Worker
  119. public class Worker extends Human {
  120.     private static final int LAST_NAME_LENGTH = 4;
  121.     private static final double WEEK_SALARY_MIN = 10;
  122.     private static final double WORK_HOURS_PER_DAY_MIN = 1;
  123.     private static final double WORK_HOURS_PER_DAY_MAX = 12;
  124.     private static final double DAYS_OF_WEEK = 7;
  125.     private double weekSalary;
  126.     private double workHoursPerDay;
  127.  
  128.     public Worker(String firstName, String lastName, double weekSalary, double workHoursPerDay) {
  129.         super(firstName, lastName);
  130.         this.setWeekSalary(weekSalary);
  131.         this.setWorkHoursPerDay(workHoursPerDay);
  132.     }
  133.  
  134.     @Override
  135.     protected void setLastName(String lastName) {
  136.         if (lastName.length() < LAST_NAME_LENGTH) {
  137.             throw new IllegalArgumentException("Expected length more than 3 symbols! Argument: lastName");
  138.         }
  139.         super.setLastName(lastName);
  140.     }
  141.  
  142.     protected void setWeekSalary(double weekSalary) {
  143.         if (weekSalary <= WEEK_SALARY_MIN) {
  144.             throw new IllegalArgumentException("Expected value mismatch! Argument: weekSalary");
  145.         }
  146.         this.weekSalary = weekSalary;
  147.     }
  148.  
  149.     protected void setWorkHoursPerDay(double workHoursPerDay) {
  150.         if (workHoursPerDay <= WORK_HOURS_PER_DAY_MIN || workHoursPerDay > WORK_HOURS_PER_DAY_MAX) {
  151.             throw new IllegalArgumentException("Expected value mismatch! Argument: workHoursPerDay");
  152.         }
  153.         this.workHoursPerDay = workHoursPerDay;
  154.     }
  155.  
  156.     public double calculateMoneyPerHour() {
  157.         return this.weekSalary / (this.workHoursPerDay * DAYS_OF_WEEK);
  158.     }
  159.  
  160.     @Override
  161.     public String toString() {
  162.         StringBuilder sb = new StringBuilder();
  163.         sb.append(super.toString());
  164.         sb.append(String.format("Week Salary: %.2f%n", this.weekSalary));
  165.         sb.append(String.format("Hours per day: %.2f%n", this.workHoursPerDay));
  166.         sb.append(String.format("Salary per hour: %.2f%n", this.calculateMoneyPerHour()));
  167.  
  168.         return sb.toString();
  169.     }
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement