Advertisement
Georgi_Benchev

Untitled

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