Advertisement
RRPetrova

FamilyTree

Aug 28th, 2020
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.42 KB | None | 0 0
  1. package _08FamilyTree;
  2.  
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5. import java.util.Scanner;
  6.  
  7. public class Main {
  8.     public static void main(String[] args) {
  9.         Scanner scanner = new Scanner(System.in);
  10.  
  11.         String input = scanner.nextLine();
  12.  
  13.         Person person = new Person();
  14.         if (input.contains("/")) {
  15.             person.setBdate(input);
  16.             person.setName("");
  17.  
  18.         } else {
  19.             person.setName(input);
  20.             person.setBdate("");
  21.         }
  22.         System.out.println(person);
  23.         input = scanner.nextLine();
  24.         Map<String, String> parents = new LinkedHashMap<>();
  25.         Map<String, String> children = new LinkedHashMap<>(); //11/11/1951 - Name BD 23/05/1980
  26.  
  27.         while (!input.equals("End")) {
  28.             if (input.contains(" - ")) {
  29.                 String[] tokens = input.split(" - ");
  30.  
  31.                 if (!tokens[0].contains("/") && !tokens[1].contains("/")) { //name name
  32.                     if (!tokens[0].equals(person.getName()) && !person.getName().equals("")) {
  33.                         parents.put(tokens[0], "");
  34.                     }
  35.                     if (!tokens[1].equals(person.getName()) && !person.getName().equals("")) {
  36.                         children.put(tokens[1], "");
  37.                     }
  38.                 } else if (!tokens[0].contains("/") && tokens[1].contains("/")) {//name date
  39.                     if (!tokens[0].equals(person.getName())) {
  40.                         parents.put(tokens[0], "");
  41.                     }
  42.                     if (!person.getBdate().equals(tokens[1])) {
  43.                         children.put("", tokens[1]);
  44.                     }
  45.                 } else if (tokens[0].contains("/") && !tokens[1].contains("/")) { //date name
  46.                     if (!person.getBdate().equals(tokens[0])) {
  47.                         parents.put("", tokens[0]);
  48.                     }
  49.                     if (!person.getName().equals(tokens[1])) {
  50.                         children.put(tokens[1], "");
  51.                     }
  52.                 } else if (tokens[0].contains("/") && tokens[1].contains("/")) { //date date
  53.                     if (!person.getBdate().equals(tokens[0])) {
  54.                         parents.put("", tokens[0]);
  55.                     }
  56.                     if (!person.getBdate().equals(tokens[1])) {
  57.                         children.put("", tokens[1]);
  58.                     }
  59.                 }
  60.             } else {
  61.                 String[] tokens = input.split("\\s+");
  62.                 String name = tokens[0] + " " + tokens[1];
  63.  
  64.                 if (person.getBdate().equals(tokens[2]) || person.getName().equals(name)) {
  65.                     parents.entrySet().removeIf(e -> e.getValue().equals(tokens[2]));
  66.                     children.entrySet().removeIf(e -> e.getValue().equals(tokens[2]));
  67.                     parents.entrySet().removeIf(e -> e.getKey().equals(name));
  68.                     children.entrySet().removeIf(e -> e.getKey().equals(name));
  69.  
  70.                     if (person.getBdate().equals(tokens[2])) {
  71.                         person.setName(name);
  72.                     }
  73.                     if (person.getName().equals(name)) {
  74.                         person.setBdate(tokens[2]);
  75.                     }
  76.                 }
  77.                     for (Map.Entry<String, String> en : parents.entrySet()) {
  78.                         if (en.getKey().equals("") && en.getValue().equals(tokens[2])) {
  79.                             parents.replace(name, tokens[2]);
  80.  
  81.                         } else if (en.getValue().equals("") && en.getKey().equals(name)) {
  82.                             parents.replace(name, "", tokens[2]);
  83.                         }
  84.                     }
  85.                     //{=11/11/1951, Penka Pesheva=09/02/1953}
  86.                      //{Gancho Peshev=01/01/2005}
  87.                     for (Map.Entry<String, String> en : children.entrySet()) {
  88.                         if (en.getKey().equals("") && en.getValue().equals(tokens[2])) {
  89.                             children.replace(name, tokens[2]);
  90.                         } else if (en.getValue().equals("") && en.getKey().equals(name)) {
  91.                             children.replace(name, "", tokens[2]);
  92.                         }
  93.  
  94.                     }
  95.                 }
  96.            // System.out.println(parents);
  97.            // System.out.println(children);
  98.                 input = scanner.nextLine();
  99.             }
  100.  
  101.  
  102.     }
  103.     }
  104.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement