Advertisement
IrinaIgnatova

Exam-JavaAdvanced-Hospital-firstProblem

Dec 12th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.62 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.util.*;
  4.  
  5. public class Main {
  6.  
  7.     public static void main(String[] args) {
  8.  
  9.         Scanner scanner = new Scanner(System.in);
  10.  
  11.         // String[] input = scanner.nextLine().split(" ");
  12.         String input = scanner.nextLine();
  13.  
  14.  
  15.         //key = department, value = patients in this department
  16.         Map<String, String[][]> departments = new HashMap<>();//всички пациенти в едно отделение са брой стаи х брой легла
  17.         //тук индексът на value е номера на стаята
  18.         //key=doctor, value = set of patients
  19.         Map<String, TreeSet<String>> doctorsAndPatients = new HashMap<>();
  20.         // за тези два Map value ни е обект, който трябва да инициализирам
  21.  
  22.         while (!input.equals("Output")) {
  23.             String[] tokens = input.split(" ");
  24.             String department = tokens[0];
  25.             String doctor = tokens[1] + " " + tokens[2];
  26.             String patient = tokens[3];
  27.  
  28.             if (!departments.containsKey(department)) {
  29.                 departments.put(department, new String[20][3]);
  30.             }
  31.             //обхождаме за да визидм има ли свободни легла (в матрицата значи null)
  32.             Initial:
  33.             for (int i = 0; i < departments.get(department).length; i++) {
  34.                 for (int j = 0; j < departments.get(department)[i].length; j++) {
  35.                     if (departments.get(department)[i][j] == null) {
  36.                         departments.get(department)[i][j] = patient;
  37.                         break Initial;// за да си излезем и от двата цикъла иначе ще сложим един пациент навсякъде
  38.                     }
  39.                 }
  40.             }
  41.             if (!doctorsAndPatients.containsKey(doctor)) {
  42.                 doctorsAndPatients.put(doctor, new TreeSet<>());
  43.             }
  44.             doctorsAndPatients.get(doctor).add(patient);
  45.  
  46.  
  47.             input = scanner.nextLine();
  48.         }
  49.  
  50.  
  51.         input = scanner.nextLine();
  52.  
  53.         while (!input.equals("End")) {
  54.             //тук си правим проверките:
  55.             String[] tokens = input.split(" ");//тук гледаме размера на масива за да видим коя команда имаме
  56.             if (tokens.length == 1) {//Department
  57.                 String department = tokens[0];
  58.                 for (int i = 0; i < departments.get(department).length; i++) {
  59.                     for (int j = 0; j < departments.get(department)[i].length; j++) {
  60.                         if (departments.get(department)[i][j] != null) {
  61.                             System.out.println(departments.get(department)[i][j]);
  62.  
  63.                         }
  64.                     }
  65.                 }
  66.             } else if (tokens.length == 2) {//Department room ili Doctor(ime i familia)
  67.                 if (Character.isDigit(tokens[1].charAt(0))) {
  68.                     String department = tokens[0];
  69.                     int room = Integer.parseInt(tokens[1]) - 1;
  70.                     String[] patients = departments.get(department)[room];
  71.                     Arrays.stream(patients).filter(Objects::nonNull).sorted(String::compareTo).forEach(System.out::println);
  72.                 } else {
  73.                     String doctor = tokens[0] + " " + tokens[1];
  74.                     doctorsAndPatients.get(doctor).forEach(System.out::println);
  75.                 }
  76.             }
  77.  
  78.  
  79.             input = scanner.nextLine();
  80.         }
  81.  
  82.  
  83.     }
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement