import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main
{
public static class InputNegativeException
extends Exception { public InputNegativeException
(String message
) { super(message);
}
}
public static class Cart {
private int flowerNumber;
public Cart
(String flower,
int flowerNumber
) { this.flower = flower;
this.flowerNumber = flowerNumber;
}
return flower;
}
public int getFlowerNumber() {
return flowerNumber;
}
}
public static void main
(String[] args
) { Scanner scanner
= new Scanner
(System.
in); List<Cart> cart = new ArrayList<>();
String[] flowerList
= {"Rose",
"Tulip",
"Sunflower",
"Lily",
"Daisy",
"Orchid",
"Peony"};
// Initialize flower storage
List<Flower> flowerStorageList = new ArrayList<>();
for (String flowerType
: flowerList
) { Flower flower = new Flower();
flower.setFlowerType(flowerType);
flower.setFlowerStorageNumber(100);
flowerStorageList.add(flower);
}
while (true) {
command = scanner.nextLine();
if (command.equals("Cart")) {
displayCart(cart);
} else if (command.equals("Collect")) {
collectFlower(scanner, flowerStorageList, cart);
} else if (command.equals("Delete")) {
deleteItem(scanner, cart, flowerStorageList);
} else if (command.equals("Checkout")) {
checkout(cart, flowerStorageList);
return;
}
}
}
public static void displayCart(List<Cart> cart) {
if (cart.isEmpty()) {
System.
out.
println("Cart is empty."); } else {
for (int i = 0; i < cart.size(); i++) {
System.
out.
println((i
+ 1) + ". " + cart.
get(i
).
getFlower() + ": " + cart.
get(i
).
getFlowerNumber()); }
}
}
public static void collectFlower(Scanner scanner, List<Flower> flowerStorageList, List<Cart> cart) {
try {
String flowerName
= scanner.
nextLine(); int flowerNumber;
for (Flower flower : flowerStorageList) {
if (flower.getFlowerType().equalsIgnoreCase(flowerName)) {
System.
out.
println(flowerName
+ ": " + flower.
getFlowerStorageNumber() + " available"); flowerNumber
= Integer.
parseInt(scanner.
nextLine());
if (flowerNumber < 0) {
throw new InputNegativeException("Please enter a legal number");
}
if (flower.getFlowerStorageNumber() >= flowerNumber) {
Cart newCart = new Cart(flowerName, flowerNumber);
cart.add(newCart);
flower.setFlowerStorageNumber(flower.getFlowerStorageNumber() - flowerNumber);
System.
out.
println("Collect successful."); }
return;
}
}
System.
out.
println("Please enter a legal number."); } catch (InputNegativeException e) {
System.
out.
println(e.
getMessage()); }
}
public static void deleteItem(Scanner scanner, List<Cart> cart, List<Flower> flowerStorageList) {
try {
int deleteNumber
= Integer.
parseInt(scanner.
nextLine());
if (deleteNumber < 1 || deleteNumber > cart.size()) {
}
Cart removedItem = cart.remove(deleteNumber - 1);
for (Flower flower : flowerStorageList) {
if (flower.getFlowerType().equalsIgnoreCase(removedItem.getFlower())) {
flower.setFlowerStorageNumber(flower.getFlowerStorageNumber() + removedItem.getFlowerNumber());
System.
out.
println("Delete successful."); return;
}
}
System.
out.
println("Out of range."); System.
out.
println(e.
getMessage()); }
}
public static void checkout(List<Cart> cart, List<Flower> flowerStorageList) {
System.
out.
println("===Receipt==="); displayCart(cart);
System.
out.
println("===Inventory==="); for (Flower flower : flowerStorageList) {
System.
out.
println(flower.
getFlowerType() + ": " + flower.
getFlowerStorageNumber()); }
}
public static class Flower {
private int flowerStorageNumber;
public String getFlowerType
() { return flowerType;
}
public void setFlowerType
(String flowerType
) { this.flowerType = flowerType;
}
public int getFlowerStorageNumber() {
return flowerStorageNumber;
}
public void setFlowerStorageNumber(int flowerStorageNumber) {
this.flowerStorageNumber = flowerStorageNumber;
}
}
}