So i’m making a supermarket program that allows to add products and sell them, so far i have this:
class Product { String name; double price; int day; int month; int year; int stock; public Product(String name,double price,int day,int month,int year,int stock) { this.name=name; this.price=price; this.day=day; this.month=month; this.year=year; this.stock=stock; } } class SuperMarket{ protected String name; protected int numMax; private List<Product> pr; public SuperMarket(String name,int numMax) { this.name=name; this.numMax=numMax; this.pr = new ArrayList<Product>(); } public void addProduct() { //deleted to post here } public void sellProduct()//its here i need help { Scanner sc=new Scanner(System.in); System.out.println("What product do you want to sell?"); String name=sc.nextLine(); } }
I´d like to know how to search in Product list by name and then change the stock(subtract-n) to sell n of that product.
Advertisement
Answer
You can use Stream API to find out the product by name. Filter the list by checking the name of product and get first match.
Optional<Product> product = productList.stream() .filter(e -> e.name.equals(inputedName)) .findFirst();
Then can check is product found then update the stock
if(product.isPresent()){ Product p = product.get(); p.stock = p.stock - numberOfSoldProduct; }
Suggestion to use getter/setter for fields.