Advertisement
Georgi_Benchev

Untitled

Dec 2nd, 2024
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.71 KB | None | 0 0
  1.  
  2. import java.util.*;
  3.  
  4.  
  5. public class Inventory_Manager {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.  
  9.  
  10.         String input;
  11.         Map<String, Double> inventoryPrices = new TreeMap<>();
  12.         Map<String, String> inventoryTypes = new TreeMap<>();
  13.  
  14.  
  15.         while (!"end".equals(input = scanner.nextLine())) {
  16.             String[] inputLine = input.split(" ");
  17.             String command = inputLine[0];
  18.  
  19.             if (command.equals("add")) {
  20.                 String itemName = inputLine[1];
  21.                 Double itemPrice = Double.parseDouble(inputLine[2]);
  22.                 String itemType = inputLine[3];
  23.                 if (inventoryPrices.containsKey(itemName)) {
  24.                     System.out.printf("Error: Item %s already exists%n", itemName);
  25.                 } else {
  26.                     inventoryPrices.put(itemName, itemPrice);
  27.                     inventoryTypes.put(itemName, itemType);
  28.                     System.out.printf("Ok: Item %s added successfully%n", itemName);
  29.                 }
  30.  
  31.             } else if (command.equals("filter")) {
  32.                 String filtrationType = inputLine[2];
  33.  
  34.                 if (filtrationType.equals("price")) {
  35.                     String priceType = inputLine[3];
  36.  
  37.                     if (priceType.equals("to")) {
  38.                         Double maxPrice = Double.parseDouble(inputLine[4]);
  39.  
  40.                         List<String> output = new ArrayList<>();
  41.  
  42.  
  43.                         inventoryPrices.entrySet().stream()
  44.                                 .sorted(Map.Entry.comparingByValue())
  45.                                 .limit(10)
  46.                                 .filter(e -> e.getValue() <= maxPrice)
  47.                                 .limit(10)
  48.                                 .forEach(e -> {
  49.                                     output.add(String.format("%s(%.2f)", e.getKey(), inventoryPrices.get(e.getKey())));
  50.                                 });
  51.                         StringBuilder sb = new StringBuilder();
  52.                         sb.append("Ok: ");
  53.                         sb.append(String.join(", ", output));
  54.                         System.out.println(sb);
  55.  
  56.                     } else if (priceType.equals("from")) {
  57.                         if (inputLine.length == 5) {
  58.                             // min
  59.                             double minValue = Double.parseDouble(inputLine[4]);
  60.  
  61.  
  62.                             List<String> output = new ArrayList<>();
  63.  
  64.  
  65.                             inventoryPrices.entrySet().stream()
  66.                                     .sorted(Map.Entry.comparingByValue())
  67.                                     .filter(e -> e.getValue() >= minValue)
  68.                                     .limit(10)
  69.                                     .forEach(e -> {
  70.                                         output.add(String.format("%s(%.2f)", e.getKey(), inventoryPrices.get(e.getKey())));
  71.                                     });
  72.                             StringBuilder sb = new StringBuilder();
  73.                             sb.append("Ok: ");
  74.                             sb.append(String.join(", ", output));
  75.                             System.out.println(sb);
  76.  
  77.  
  78.                         } else {
  79.                             // size 6 - min i max
  80.                             Double minValue = Double.parseDouble(inputLine[4]);
  81.                             Double maxValue = Double.parseDouble(inputLine[6]);
  82.  
  83.                             List<String> output = new ArrayList<>();
  84.  
  85.  
  86.                             inventoryPrices.entrySet().stream()
  87.                                     .sorted(Map.Entry.comparingByValue())
  88.                                     .filter(e -> e.getValue() >= minValue && e.getValue() <= maxValue)
  89.                                     .limit(10)
  90.                                     .forEach(e -> {
  91.                                         output.add(String.format("%s(%.2f)", e.getKey(), inventoryPrices.get(e.getKey())));
  92.                                     });
  93.                             StringBuilder sb = new StringBuilder();
  94.                             sb.append("Ok: ");
  95.                             sb.append(String.join(", ", output));
  96.                             System.out.println(sb);
  97.  
  98.  
  99.                         }
  100.                     }
  101.  
  102.                 } else if (filtrationType.equals("type")) {
  103.                     String typeToFilter = inputLine[3];
  104.  
  105.                     List<String> output = new ArrayList<>();
  106.                     if (!inventoryTypes.containsValue(typeToFilter)) {
  107.                         System.out.printf("Error: Type %s does not exist%n", typeToFilter);
  108.                     } else {
  109.  
  110.                         Map<String, Double> localMap = new HashMap<>();
  111.                         inventoryTypes.entrySet().stream()
  112.                                 .filter(e -> e.getValue().equals(typeToFilter))
  113.                                 .limit(10)
  114.                                 .forEach(e -> {
  115.                                     localMap.put(e.getKey(), inventoryPrices.get(e.getKey()));
  116.                                 });
  117.                         localMap.entrySet()
  118.                                 .stream()
  119.                                 .sorted(Map.Entry.comparingByValue())
  120.                                 .forEach(e -> output.add(String.format(
  121.                                         "%s(%.2f)", e.getKey(), inventoryPrices.get(e.getKey()))));
  122.  
  123.                         StringBuilder sb = new StringBuilder();
  124.                         sb.append("Ok: ");
  125.                         sb.append(String.join(", ", output));
  126.                         System.out.println(sb);
  127.                     }
  128.                 }
  129.             }
  130.  
  131.  
  132.         }
  133.  
  134.     }
  135. }
  136.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement