RGAlex

O3. Need For Speed III / FinalExam - O3

Mar 26th, 2021 (edited)
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.02 KB | None | 0 0
  1. package FinalExam.O3;
  2.  
  3. import java.util.LinkedHashMap;
  4. import java.util.Map;
  5. import java.util.Scanner;
  6.  
  7. public class O3NeedForSpeedIII {
  8.     public static void main(String[] args) {
  9.         Scanner scanner = new Scanner(System.in);
  10.         int carNumber = Integer.parseInt(scanner.nextLine());
  11.  
  12.         Map<String, int[]> cars = new LinkedHashMap<>();
  13.         for (int i = 0; i < carNumber; i++) {
  14.             String[] carInfo = scanner.nextLine().split("\\|");
  15.             cars.put(carInfo[0], new int[2]);
  16.             cars.get(carInfo[0])[0] += Integer.parseInt(carInfo[1]);
  17.             cars.get(carInfo[0])[1] += Integer.parseInt(carInfo[2]);
  18.         }
  19.         String command;
  20.         while (!"Stop".equals(command = scanner.nextLine())) {
  21.             String[] type = command.split(" : ");
  22.             String model = type[1];
  23.             int number = Integer.parseInt(type[2]);
  24.             switch (type[0]) {
  25.                 case "Drive":
  26.                     int fuel = Integer.parseInt(type[3]);
  27.                     if (cars.get(model)[1] < fuel) {
  28.                         System.out.println("Not enough fuel to make that ride");
  29.                     } else {
  30.                         System.out.println(model + " driven for " + number + " kilometers. " + fuel + " liters of fuel consumed.");
  31.                         cars.get(model)[0] += number;
  32.                         cars.get(model)[1] -= fuel;
  33.                         if (cars.get(model)[0] >= 100000) {
  34.                             System.out.println("Time to sell the " + model + "!");
  35.                             cars.remove(model);
  36.                         }
  37.                     }
  38.                     break;
  39.                 case "Refuel":
  40.                     int before = cars.get(model)[1];
  41.                     if (before + number > 75) {
  42.                         cars.get(model)[1] = 75;
  43.                         number = 75 - before;
  44.                     } else {
  45.                         cars.get(model)[1] += number;
  46.                     }
  47.                     System.out.println(model + " refueled with " + number + " liters");
  48.                     break;
  49.                 case "Revert":
  50.                     int beforeKm = cars.get(model)[0];
  51.                     if (beforeKm - number < 10000) {
  52.                         cars.get(model)[0] = 10000;
  53.                         break;
  54.                     } else {
  55.                         cars.get(model)[0] -= number;
  56.                         System.out.println(model + " mileage decreased by " + number + " kilometers");
  57.                     }
  58.                     break;
  59.             }
  60.         }
  61.         cars.entrySet().stream().sorted((a, b) -> {
  62.             int result = Integer.compare(b.getValue()[0], a.getValue()[0]);
  63.             if (result == 0) {
  64.                 result = a.getKey().compareTo(b.getKey());
  65.             }
  66.             return result;
  67.         }).forEach(e -> System.out.printf("%s -> Mileage: %d kms, Fuel in the tank: %d lt.%n",
  68.                 e.getKey(), e.getValue()[0], e.getValue()[1]));
  69.     }
  70. }
  71.  
Add Comment
Please, Sign In to add comment