Advertisement
ledkaa

Invertory Manager

May 23rd, 2023
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.48 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class InventoryManager {
  4. public static void main(String[] args) {
  5. Scanner scanner = new Scanner(System.in);
  6. Map<String, Item> inventory = new HashMap<>();
  7.  
  8. String[] input = scanner.nextLine().split(" ");
  9.  
  10.  
  11. while (!(input[0].equals("end"))) {
  12. String command=input[0];
  13. switch (command) {
  14. case "add":
  15. String name = input[1];
  16. Double price = Double.parseDouble(input[2]);
  17. String type = input[3];
  18. Item newItem = new Item(name, price, type);
  19. if (inventory.containsKey(name)) {
  20. System.out.println("Error: Item " + name + " already exists");
  21. } else {
  22. inventory.put(name, newItem);
  23. System.out.println("Ok: Item " + name + " added successfully");
  24. }
  25. break;
  26. case "filter":
  27. String byWhat = input[2];
  28. if (byWhat.equals("type")) {
  29. String theType = input[3];
  30. List<Item> filteredItems = new ArrayList<>();
  31. for (Item item : inventory.values()) {
  32. if (item.type.equals(theType)) {
  33. filteredItems.add(item);
  34. }
  35. }
  36.  
  37. if (filteredItems.isEmpty()) {
  38. System.out.println("Error: Type " + theType + " does not exist");
  39. } else {
  40. filteredItems.sort(Comparator.comparingDouble(Item::getPrice)
  41. .thenComparing(Item::getName)
  42. .thenComparing(Item::getType));
  43. printFilteredItems(filteredItems);
  44. }
  45.  
  46. } else if (byWhat.equals("price")) {
  47. if (input[3].equals("from")) {
  48. double minPrice = Double.parseDouble(input[4]);
  49. if ( input.length==7 && input[5].equals("to")) {
  50. double maxPrice = Double.parseDouble(input[6]);
  51. List<Item> filteredItems = new ArrayList<>();
  52. for (Item item : inventory.values()) {
  53. if (item.price >= minPrice && item.price <= maxPrice) {
  54. filteredItems.add(item);
  55. }
  56. }
  57. filteredItems.sort(Comparator.comparingDouble(Item::getPrice)
  58. .thenComparing(Item::getName)
  59. .thenComparing(Item::getType));
  60. printFilteredItems(filteredItems);
  61. } else {
  62. List<Item> filteredItems = new ArrayList<>();
  63. for (Item item : inventory.values()) {
  64. if (item.price >= minPrice) {
  65. filteredItems.add(item);
  66. }
  67. }
  68. filteredItems.sort(Comparator.comparingDouble(Item::getPrice)
  69. .thenComparing(Item::getName)
  70. .thenComparing(Item::getType));
  71. printFilteredItems(filteredItems);
  72. }
  73.  
  74. } else if (input[3].equals("to")) {
  75. double maxPrice = Double.parseDouble(input[4]);
  76. List<Item> filteredItems = new ArrayList<>();
  77. for (Item item : inventory.values()) {
  78. if (item.price <= maxPrice) {
  79. filteredItems.add(item);
  80. }
  81. }
  82. filteredItems.sort(Comparator.comparingDouble(Item::getPrice)
  83. .thenComparing(Item::getName)
  84. .thenComparing(Item::getType));
  85. printFilteredItems(filteredItems);
  86. }
  87. }
  88. break;
  89.  
  90. }
  91. input = scanner.nextLine().split(" ");
  92. }
  93. }
  94.  
  95. private static void printFilteredItems(List<Item> filteredItems) {
  96. int length = Math.min(filteredItems.size(), 10);
  97. List<String> itemStrings = new ArrayList<>();
  98. for (int i = 0; i < length; i++) {
  99. itemStrings.add(filteredItems.get(i).toString());
  100. }
  101. System.out.println("Ok: " + String.join(", ", itemStrings));
  102. }
  103. }
  104. class Item {
  105. String name;
  106. Double price;
  107. String type;
  108.  
  109. public Item(String name, Double price, String type) {
  110. this.name = name;
  111. this.price = price;
  112. this.type = type;
  113. }
  114.  
  115. public String getName() {
  116. return name;
  117. }
  118.  
  119. public Double getPrice() {
  120. return price;
  121. }
  122.  
  123. public String getType() {
  124. return type;
  125. }
  126. public String toString() {
  127. return name + "(" + String.format("%.2f", price) + ")";
  128. }
  129. }
  130.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement