Advertisement
Tsuki11

Main

Mar 11th, 2020
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.62 KB | None | 0 0
  1. package MoreExercise_3_CarSalesman;
  2.  
  3. import java.util.*;
  4.  
  5. public class Main {
  6.     public static void main(String[] args) {
  7.         Scanner scan = new Scanner(System.in);
  8.  
  9.  
  10.         Map<String, List<Engine>> engineByModel = new LinkedHashMap<>();
  11.         int engines = Integer.parseInt(scan.nextLine());
  12.  
  13.         boolean hasNumber;
  14.         for (int i = 0; i < engines; i++) {
  15.             String[] input = scan.nextLine().split("\\s+");
  16.             String engineModel = input[0];
  17.             String engPower = input[1];
  18.             String engDisplacement = "n/a";
  19.             String engEfficiency = "n/a";
  20.  
  21.             if (input.length == 3) {
  22.                 String token = input[2];
  23.                 hasNumber = hasNumbers(token);
  24.                 if (hasNumber) {
  25.                     engDisplacement = token;
  26.                 } else {
  27.                     engEfficiency = token;
  28.                 }
  29.             }
  30.             if (input.length == 4) {
  31.                 engDisplacement = input[2];
  32.                 engEfficiency = input[3];
  33.             }
  34.             Engine currentEngine = new Engine(engineModel, engPower, engDisplacement, engEfficiency);
  35.             engineByModel.putIfAbsent(engineModel, new ArrayList<>());
  36.             engineByModel.get(engineModel).add(currentEngine);
  37.  
  38.         }
  39.         Map<String, List<Car>> carByModel = new LinkedHashMap<>();
  40.  
  41.         int cars = Integer.parseInt(scan.nextLine());
  42.  
  43.         for (int i = 0; i < cars; i++) {
  44.             String[] input = scan.nextLine().split("\\s+");
  45.             String carModel = input[0];
  46.             String carEngine = input[1];
  47.             String carWeight = "n/a";
  48.             String carColour = "n/a";
  49.             if (input.length == 3) {
  50.                 String token = input[2];
  51.                 hasNumber = hasNumbers(token);
  52.                 if (hasNumber) {
  53.                     carWeight = token;
  54.                 } else {
  55.                     carColour = token;
  56.                 }
  57.             }
  58.             if (input.length == 4) {
  59.                 carWeight = input[2];
  60.                 carColour = input[3];
  61.             }
  62.  
  63.             List<Engine> engineCurrModel = engineByModel.get(carEngine);
  64.             Engine currEngine = getCurrentEngine(engineCurrModel);
  65.             Car currentCar = new Car(carModel, currEngine, carWeight, carColour);
  66.             carByModel.putIfAbsent(carModel, new ArrayList<>());
  67.             carByModel.get(carModel).add(currentCar);
  68.             System.out.println();
  69.         }
  70.  
  71.         for (Map.Entry<String, List<Car>> stringListEntry : carByModel.entrySet()) {
  72.             System.out.println(stringListEntry.
  73.                     toString().replace("[", "")
  74.                     .replace("]", "")
  75.                     .replace("=",":"));
  76.         }
  77.  
  78.  
  79.  
  80.     }
  81.  
  82.     private static Engine getCurrentEngine(List<Engine> engineCurrModel) {
  83.         String engineModel = "";
  84.         String engPower = "";
  85.         String engDisplacement = "";
  86.         String engEfficiency = "";
  87.         for (Engine engine : engineCurrModel) {
  88.             engineModel = engine.getEngineModel();
  89.             engPower = engine.getEngPower();
  90.             engDisplacement = engine.getEngDisplacement();
  91.             engEfficiency = engine.getEngEfficiency();
  92.         }
  93.  
  94.  
  95.         return new Engine(engineModel, engPower, engDisplacement, engEfficiency);
  96.     }
  97.  
  98.     private static boolean hasNumbers(String token) {
  99.  
  100.         for (int i = 0; i < token.length(); i++) {
  101.             int ascii = token.charAt(i);
  102.             if (ascii > 47 && ascii < 58) {
  103.                 return true;
  104.             }
  105.         }
  106.         return false;
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement