Advertisement
veronikaaa86

03. Need for Speed III

Jul 30th, 2022
1,410
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.60 KB | None | 0 0
  1. package examPrep2;
  2.  
  3. import java.util.*;
  4.  
  5. public class P03NeedForSpeedIII {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.  
  9.         int n = Integer.parseInt(scanner.nextLine());
  10.  
  11.         Map<String, List<Integer>> carsMap = new LinkedHashMap<>();
  12.         for (int i = 0; i < n; i++) {
  13.             String[] carsToken = scanner.nextLine().split("\\|");
  14.             String car = carsToken[0];
  15.             int mileage = Integer.parseInt(carsToken[1]);
  16.             int fuel = Integer.parseInt(carsToken[2]);
  17.  
  18.             carsMap.putIfAbsent(car, new ArrayList<>());
  19.  
  20.             carsMap.get(car).add(0, mileage);
  21.             carsMap.get(car).add(1, fuel);
  22.         }
  23.  
  24.         String inputLine = scanner.nextLine();
  25.         while (!inputLine.equals("Stop")) {
  26.             String[] tokens = inputLine.split(" : ");
  27.             String command = tokens[0];
  28.             String car = tokens[1];
  29.  
  30.             int mileage = carsMap.get(car).get(0);
  31.             int fuel = carsMap.get(car).get(1);
  32.  
  33.             switch (command) {
  34.                 case "Drive":
  35.                     int distance = Integer.parseInt(tokens[2]);
  36.                     int consumedFuel = Integer.parseInt(tokens[3]);
  37.  
  38.                     if (fuel >= consumedFuel) {
  39.                         carsMap.get(car).set(0, mileage + distance);
  40.                         carsMap.get(car).set(1, fuel - consumedFuel);
  41.                         System.out.printf("%s driven for %d kilometers. %d liters of fuel consumed.%n", car, distance, consumedFuel);
  42.                     } else {
  43.                         System.out.println("Not enough fuel to make that ride");
  44.                     }
  45.  
  46.                     if (mileage + distance >= 100000) {
  47.                         System.out.printf("Time to sell the %s!%n", car);
  48.                         carsMap.remove(car);
  49.                     }
  50.  
  51.                     break;
  52.                 case "Refuel":
  53.                     int refillFuel = Integer.parseInt(tokens[2]);
  54.  
  55.                     int totalFuel = fuel + + refillFuel;
  56.                     int diff = 0;
  57.                     if (totalFuel > 75) {
  58.                         diff = 75 - fuel;
  59.                         totalFuel = 75;
  60.                     } else {
  61.                         diff = refillFuel;
  62.                     }
  63.                     carsMap.get(car).set(1, totalFuel);
  64.                     System.out.printf("%s refueled with %d liters%n", car, diff);
  65.  
  66.                     break;
  67.                 case "Revert":
  68.                     int kilometers = Integer.parseInt(tokens[2]);
  69.                     int totalMileage = mileage - kilometers;
  70.  
  71.                     if (totalMileage < 10000) {
  72.                         totalMileage = 10000;
  73.                     } else {
  74.                         System.out.printf("%s mileage decreased by %d kilometers%n", car, kilometers);
  75.                     }
  76.  
  77.                     carsMap.get(car).set(0, totalMileage);
  78.  
  79.                     break;
  80.             }
  81.  
  82.  
  83.             inputLine = scanner.nextLine();
  84.         }
  85.  
  86.         carsMap.forEach((key, value) ->
  87.                 System.out.printf("%s -> Mileage: %d kms, Fuel in the tank: %d lt.%n",
  88.                         key, value.get(0), value.get(1)));
  89.  
  90. //        for (Map.Entry<String, List<Integer>> entry : carsMap.entrySet()) {
  91. //            String car = entry.getKey();
  92. //            int mileage = entry.getValue().get(0);
  93. //            int fuel = entry.getValue().get(1);
  94. //
  95. //            System.out.printf("%s -> Mileage: %d kms, Fuel in the tank: %d lt.%n", car, mileage, fuel);
  96. //        }
  97.  
  98.     }
  99. }
  100.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement