Advertisement
lameski

Untitled

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