Advertisement
Martina312

[НП] - Евалуатор на кандидати

Aug 20th, 2020
1,262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.93 KB | None | 0 0
  1. import java.util.Scanner;
  2.  
  3. /**
  4.  * I partial exam 2016
  5.  */
  6. public class ApplicantEvaluationTest {
  7.     public static void main(String[] args) {
  8.         Scanner scanner = new Scanner(System.in);
  9.         String name = scanner.nextLine();
  10.         int creditScore = scanner.nextInt();
  11.         int employmentYears = scanner.nextInt();
  12.         boolean hasCriminalRecord = scanner.nextBoolean();
  13.         int choice = scanner.nextInt();
  14.         Applicant applicant = new Applicant(name, creditScore, employmentYears, hasCriminalRecord);
  15.         Evaluator.TYPE type = Evaluator.TYPE.values()[choice];
  16.         Evaluator evaluator = null;
  17.         try {
  18.             evaluator = EvaluatorBuilder.build(type);
  19.             System.out.println("Applicant");
  20.             System.out.println(applicant);
  21.             System.out.println("Evaluation type: " + type.name());
  22.             if (evaluator.evaluate(applicant)) {
  23.                 System.out.println("Applicant is ACCEPTED");
  24.             } else {
  25.                 System.out.println("Applicant is REJECTED");
  26.             }
  27.         } catch (InvalidEvaluation invalidEvaluation) {
  28.             System.out.println("Invalid evaluation");
  29.         }
  30.     }
  31. }
  32.  
  33. class Applicant {
  34.     private String name;
  35.     private int creditScore;
  36.     private int employmentYears;
  37.     private boolean hasCriminalRecord;
  38.  
  39.     public Applicant(String name, int creditScore, int employmentYears, boolean hasCriminalRecord) {
  40.         this.name = name;
  41.         this.creditScore = creditScore;
  42.         this.employmentYears = employmentYears;
  43.         this.hasCriminalRecord = hasCriminalRecord;
  44.     }
  45.  
  46.     public String getName() {
  47.         return name;
  48.     }
  49.  
  50.     public int getCreditScore() {
  51.         return creditScore;
  52.     }
  53.  
  54.     public int getEmploymentYears() {
  55.         return employmentYears;
  56.     }
  57.  
  58.     public boolean hasCriminalRecord() {
  59.         return hasCriminalRecord;
  60.     }
  61.  
  62.     @Override
  63.     public String toString() {
  64.         return String.format("Name: %s\nCredit score: %d\nExperience: %d\nCriminal record: %s\n",
  65.                 name, creditScore, employmentYears, hasCriminalRecord ? "Yes" : "No");
  66.     }
  67. }
  68.  
  69. interface Evaluator {
  70.     enum TYPE {
  71.         NO_CRIMINAL_RECORD,
  72.         MORE_EXPERIENCE,
  73.         MORE_CREDIT_SCORE,
  74.         NO_CRIMINAL_RECORD_AND_MORE_EXPERIENCE,
  75.         MORE_EXPERIENCE_AND_MORE_CREDIT_SCORE,
  76.         NO_CRIMINAL_RECORD_AND_MORE_CREDIT_SCORE,
  77.         INVALID // should throw exception
  78.     }
  79.  
  80.     boolean evaluate(Applicant applicant);
  81. }
  82.  
  83. class InvalidEvaluation extends Exception{
  84.     public InvalidEvaluation(String message) {
  85.         super(message);
  86.     }
  87. }
  88.  
  89. class EvaluatorBuilder {
  90.     public static Evaluator build(Evaluator.TYPE type) throws InvalidEvaluation {
  91.         Evaluator evaluator = null;
  92.         if (type.equals(Evaluator.TYPE.NO_CRIMINAL_RECORD))
  93.             return evaluator = (applicant -> !applicant.hasCriminalRecord());
  94.        
  95.         else if (type.equals(Evaluator.TYPE.MORE_EXPERIENCE))
  96.             return evaluator = (applicant -> applicant.getEmploymentYears() > 10);
  97.        
  98.         else if (type.equals(Evaluator.TYPE.MORE_CREDIT_SCORE))
  99.             return evaluator = (applicant -> applicant.getCreditScore() >= 500);
  100.        
  101.         else if (type.equals(Evaluator.TYPE.MORE_EXPERIENCE_AND_MORE_CREDIT_SCORE))
  102.             return evaluator = (applicant -> applicant.getCreditScore() > 500 && applicant.getEmploymentYears() > 10);
  103.        
  104.         else if (type.equals(Evaluator.TYPE.NO_CRIMINAL_RECORD_AND_MORE_CREDIT_SCORE))
  105.             return evaluator = (applicant -> applicant.getCreditScore() > 500 && !applicant.hasCriminalRecord());
  106.            
  107.         else if (type.equals(Evaluator.TYPE.NO_CRIMINAL_RECORD_AND_MORE_EXPERIENCE))
  108.             return evaluator = (applicant -> applicant.getEmploymentYears() > 10 && !applicant.hasCriminalRecord());
  109.        
  110.         else
  111.             throw new InvalidEvaluation("");
  112.     }
  113. }
  114.  
  115.  
  116.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement