Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.*;
- public class InventoryManager {
- public static void main(String[] args) {
- Scanner scanner = new Scanner(System.in);
- Map<String, Item> inventory = new HashMap<>();
- String[] input = scanner.nextLine().split(" ");
- while (!(input[0].equals("end"))) {
- String command=input[0];
- switch (command) {
- case "add":
- String name = input[1];
- Double price = Double.parseDouble(input[2]);
- String type = input[3];
- Item newItem = new Item(name, price, type);
- if (inventory.containsKey(name)) {
- System.out.println("Error: Item " + name + " already exists");
- } else {
- inventory.put(name, newItem);
- System.out.println("Ok: Item " + name + " added successfully");
- }
- break;
- case "filter":
- String byWhat = input[2];
- if (byWhat.equals("type")) {
- String theType = input[3];
- List<Item> filteredItems = new ArrayList<>();
- for (Item item : inventory.values()) {
- if (item.type.equals(theType)) {
- filteredItems.add(item);
- }
- }
- if (filteredItems.isEmpty()) {
- System.out.println("Error: Type " + theType + " does not exist");
- } else {
- filteredItems.sort(Comparator.comparingDouble(Item::getPrice)
- .thenComparing(Item::getName)
- .thenComparing(Item::getType));
- printFilteredItems(filteredItems);
- }
- } else if (byWhat.equals("price")) {
- if (input[3].equals("from")) {
- double minPrice = Double.parseDouble(input[4]);
- if ( input.length==7 && input[5].equals("to")) {
- double maxPrice = Double.parseDouble(input[6]);
- List<Item> filteredItems = new ArrayList<>();
- for (Item item : inventory.values()) {
- if (item.price >= minPrice && item.price <= maxPrice) {
- filteredItems.add(item);
- }
- }
- filteredItems.sort(Comparator.comparingDouble(Item::getPrice)
- .thenComparing(Item::getName)
- .thenComparing(Item::getType));
- printFilteredItems(filteredItems);
- } else {
- List<Item> filteredItems = new ArrayList<>();
- for (Item item : inventory.values()) {
- if (item.price >= minPrice) {
- filteredItems.add(item);
- }
- }
- filteredItems.sort(Comparator.comparingDouble(Item::getPrice)
- .thenComparing(Item::getName)
- .thenComparing(Item::getType));
- printFilteredItems(filteredItems);
- }
- } else if (input[3].equals("to")) {
- double maxPrice = Double.parseDouble(input[4]);
- List<Item> filteredItems = new ArrayList<>();
- for (Item item : inventory.values()) {
- if (item.price <= maxPrice) {
- filteredItems.add(item);
- }
- }
- filteredItems.sort(Comparator.comparingDouble(Item::getPrice)
- .thenComparing(Item::getName)
- .thenComparing(Item::getType));
- printFilteredItems(filteredItems);
- }
- }
- break;
- }
- input = scanner.nextLine().split(" ");
- }
- }
- private static void printFilteredItems(List<Item> filteredItems) {
- int length = Math.min(filteredItems.size(), 10);
- List<String> itemStrings = new ArrayList<>();
- for (int i = 0; i < length; i++) {
- itemStrings.add(filteredItems.get(i).toString());
- }
- System.out.println("Ok: " + String.join(", ", itemStrings));
- }
- }
- class Item {
- String name;
- Double price;
- String type;
- public Item(String name, Double price, String type) {
- this.name = name;
- this.price = price;
- this.type = type;
- }
- public String getName() {
- return name;
- }
- public Double getPrice() {
- return price;
- }
- public String getType() {
- return type;
- }
- public String toString() {
- return name + "(" + String.format("%.2f", price) + ")";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement