Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package _08FamilyTree;
- import java.util.LinkedHashMap;
- import java.util.Map;
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- String input = scanner.nextLine();
- Person person = new Person();
- if (input.contains("/")) {
- person.setBdate(input);
- person.setName("");
- } else {
- person.setName(input);
- person.setBdate("");
- }
- System.out.println(person);
- input = scanner.nextLine();
- Map<String, String> parents = new LinkedHashMap<>();
- Map<String, String> children = new LinkedHashMap<>(); //11/11/1951 - Name BD 23/05/1980
- while (!input.equals("End")) {
- if (input.contains(" - ")) {
- String[] tokens = input.split(" - ");
- if (!tokens[0].contains("/") && !tokens[1].contains("/")) { //name name
- if (!tokens[0].equals(person.getName()) && !person.getName().equals("")) {
- parents.put(tokens[0], "");
- }
- if (!tokens[1].equals(person.getName()) && !person.getName().equals("")) {
- children.put(tokens[1], "");
- }
- } else if (!tokens[0].contains("/") && tokens[1].contains("/")) {//name date
- if (!tokens[0].equals(person.getName())) {
- parents.put(tokens[0], "");
- }
- if (!person.getBdate().equals(tokens[1])) {
- children.put("", tokens[1]);
- }
- } else if (tokens[0].contains("/") && !tokens[1].contains("/")) { //date name
- if (!person.getBdate().equals(tokens[0])) {
- parents.put("", tokens[0]);
- }
- if (!person.getName().equals(tokens[1])) {
- children.put(tokens[1], "");
- }
- } else if (tokens[0].contains("/") && tokens[1].contains("/")) { //date date
- if (!person.getBdate().equals(tokens[0])) {
- parents.put("", tokens[0]);
- }
- if (!person.getBdate().equals(tokens[1])) {
- children.put("", tokens[1]);
- }
- }
- } else {
- String[] tokens = input.split("\\s+");
- String name = tokens[0] + " " + tokens[1];
- if (person.getBdate().equals(tokens[2]) || person.getName().equals(name)) {
- parents.entrySet().removeIf(e -> e.getValue().equals(tokens[2]));
- children.entrySet().removeIf(e -> e.getValue().equals(tokens[2]));
- parents.entrySet().removeIf(e -> e.getKey().equals(name));
- children.entrySet().removeIf(e -> e.getKey().equals(name));
- if (person.getBdate().equals(tokens[2])) {
- person.setName(name);
- }
- if (person.getName().equals(name)) {
- person.setBdate(tokens[2]);
- }
- }
- for (Map.Entry<String, String> en : parents.entrySet()) {
- if (en.getKey().equals("") && en.getValue().equals(tokens[2])) {
- parents.replace(name, tokens[2]);
- } else if (en.getValue().equals("") && en.getKey().equals(name)) {
- parents.replace(name, "", tokens[2]);
- }
- }
- //{=11/11/1951, Penka Pesheva=09/02/1953}
- //{Gancho Peshev=01/01/2005}
- for (Map.Entry<String, String> en : children.entrySet()) {
- if (en.getKey().equals("") && en.getValue().equals(tokens[2])) {
- children.replace(name, tokens[2]);
- } else if (en.getValue().equals("") && en.getKey().equals(name)) {
- children.replace(name, "", tokens[2]);
- }
- }
- }
- // System.out.println(parents);
- // System.out.println(children);
- input = scanner.nextLine();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement