diff --git a/Lab6 b/Lab6 new file mode 100644 index 0000000..c8c0d0d --- /dev/null +++ b/Lab6 @@ -0,0 +1,225 @@ +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import java.util.Comparator; + +class ToyRoom { + + public static void variant() { + int C13 = 2430 % 13; + System.out.println("\n ---------------------------------------------------------------------------------------------------------------------"); + System.out.println(" C13 = " + C13 + ", So, the task is: Prepare the toy room for children of different age groups."); + System.out.println(" ---------------------------------------------------------------------------------------------------------------------"); + } + + private List toys; + + public ToyRoom() { + this.toys = new ArrayList<>(); + } + + public void addToy(Toy toy) { + toys.add(toy); + } + + public void displayToys() { + System.out.println(" -------------------------------------------------------"); + System.out.printf(" | %-20s | %-10s | %-15s |\n", "Name", "Price ($)", "Age Group"); + System.out.println(" |----------------------|------------|-----------------|"); + for (Toy toy : toys) { + System.out.printf(" | %-20s | %-10.2f | %-15s |\n", toy.name, toy.price, toy.ageGroup); + } + System.out.println(" -------------------------------------------------------"); + } + + public void sortToys(boolean ascending) { + if (ascending) { + toys.sort(Comparator.comparingDouble(Toy::getPrice)); + } else { + toys.sort(Comparator.comparingDouble(Toy::getPrice).reversed()); + } + } + + public List findToysByPriceRange(double minPrice, double maxPrice) { + List foundToys = new ArrayList<>(); + for (Toy toy : toys) { + if (toy.getPrice() >= minPrice && toy.getPrice() <= maxPrice) { + foundToys.add(toy); + } + } + return foundToys; + } + + public void findToysByName(String name) { + List foundToys = new ArrayList<>(); + for (Toy toy : toys) { + if (toy.name.toLowerCase().contains(name.toLowerCase())) { + foundToys.add(toy); + } + } + + if (!foundToys.isEmpty()) { + System.out.println("\n Toys with matching name \"" + name + "\":"); + System.out.println(" -------------------------------------------------------"); + System.out.printf(" | %-20s | %-10s | %-15s |\n", "Name", "Price ($)", "Age Group"); + System.out.println(" |----------------------|------------|-----------------|"); + for (Toy toy : foundToys) { + System.out.printf(" | %-20s | %-10.2f | %-15s |\n", toy.name, toy.price, toy.ageGroup); + } + System.out.println(" -------------------------------------------------------"); + } else { + System.out.println(" No toys found with a matching name."); + } + } +} + + +abstract class Toy { + protected String name; + protected double price; + protected String ageGroup; + + public Toy(String name, double price, String ageGroup) { + this.name = name; + this.price = price; + this.ageGroup = ageGroup; + + } + + public double getPrice() { + return price; + } + + @Override + public String toString() { + return name + " - $" + price + ageGroup; + } +} + +class Car extends Toy { + public Car(String name, double price, String ageGroup) { + super(name, price, ageGroup); + } +} + +class Doll extends Toy { + public Doll(String name, double price, String ageGroup) { + super(name, price, ageGroup); + } +} + +class Ball extends Toy { + public Ball(String name, double price, String ageGroup) { + super(name, price, ageGroup); + } +} + +class Cube extends Toy { + public Cube(String name, double price, String ageGroup) { + super(name, price, ageGroup); + } +} + +public class Lab6 { + public static void main(String[] args) { + ToyRoom toyRoom = new ToyRoom(); + ToyRoom.variant(); + + toyRoom.addToy(new Car("Small car 'Mcqueen'", 10.0, "1-3 years")); + toyRoom.addToy(new Car("Small Car 'Audi'", 12.0, "1-3 years")); + toyRoom.addToy(new Car("Medium Yellow Car", 15.0, "3-6 years")); + toyRoom.addToy(new Car("Medium Blue Car", 18.0, "3-6 years")); + toyRoom.addToy(new Car("Car on R/C", 30.0, "6-10 years")); + toyRoom.addToy(new Doll("Doll that can talk", 25.0, "1-3 years")); + toyRoom.addToy(new Doll("Doll 'Barbie'", 10.0, "3-6 years")); + toyRoom.addToy(new Doll("Bear Teddy", 14.5, "6-12 months")); + toyRoom.addToy(new Ball("Yellow Ball", 5.0, "6-12 months")); + toyRoom.addToy(new Ball("Big Blue Ball", 7.0, "1-3 years")); + toyRoom.addToy(new Ball("Football Ball", 12.5, "6-10 years")); + toyRoom.addToy(new Cube("Cubes with pictures", 6.5, "6-12 months")); + toyRoom.addToy(new Cube("Cubes with letters", 9.0, "3-6 years")); + toyRoom.addToy(new Cube("Rubik's Cube", 14.0, "6-10 years")); + + boolean exit = false; + Scanner scanner = new Scanner(System.in); + + while (!exit) { + System.out.println("\n Select an option:"); + System.out.println(" 1 - Display all toys;"); + System.out.println(" 2 - Find toy by price range;"); + System.out.println(" 3 - Sort toys by price;"); + System.out.println(" 4 - Find a toy by name;"); + System.out.println(" Q - Quit;\n"); + + String option = scanner.nextLine(); + + switch (option.toLowerCase()) { + case "1": + System.out.println(" Toys in the Toy Room:"); + toyRoom.displayToys(); + break; + case "2": + System.out.print(" Enter the minimum price for the toy: "); + double minPrice = scanner.nextDouble(); + scanner.nextLine(); + + System.out.print(" Enter the maximum price for the toy: "); + double maxPrice; + do { + maxPrice = scanner.nextDouble(); + scanner.nextLine(); + + if (minPrice >= maxPrice) { + System.out.println(" Error: The minimum price must be less than the maximum price. Please try again."); + System.out.print(" Enter the maximum price for the toy: "); + } + } while (minPrice >= maxPrice); + + List foundToys = toyRoom.findToysByPriceRange(minPrice, maxPrice); + if (!foundToys.isEmpty()) { + System.out.println("\n Found toys within the price range:"); + System.out.println(" -------------------------------------------------------"); + System.out.printf(" | %-20s | %-10s | %-15s |\n", "Name", "Price ($)", "Age Group"); + System.out.println(" |----------------------|------------|-----------------|"); + for (Toy toy : foundToys) { + System.out.printf(" | %-20s | %-10.2f | %-15s |\n", toy.name, toy.price, toy.ageGroup); + } + System.out.println(" -------------------------------------------------------"); + } else { + System.out.println("\n No toys found within the price range."); + } + break; + + case "3": + System.out.println(" Choose the sorting order:"); + System.out.println(" A - Ascending"); + System.out.println(" D - Descending"); + String sortOrder = scanner.nextLine(); + + boolean ascending = true; + if (sortOrder.equalsIgnoreCase("D")) { + ascending = false; + } + + toyRoom.sortToys(ascending); + System.out.println("\n Toys in the Toy Room after sorting:"); + toyRoom.displayToys(); + break; + + case "4": + System.out.print(" Enter the toy name: "); + String toyName = scanner.nextLine(); + + toyRoom.findToysByName(toyName); + break; + + case "q": + exit = true; + System.out.println(" Program exited. Thank you!"); + break; + default: + System.out.println(" Invalid option. Please try again."); + } + } + } +}