I am trying to convert my addProcut method so that it is compatible with an array. The original addProduct method was compatible with my ArrayList.
Here is the full code of the StockManager class with the Arraylist and methods:
import java.util.ArrayList; import java.util.Iterator; public class StockManager { // A list of the products. private ArrayList<Product> stock; /** * Initialise the stock manager. */ public StockManager() { stock = new ArrayList<Product>(); } /** * Add a product to the list. * @param item The item to be added. */ public void addProduct(Product product) { stock.add(product); } /** * Receive a delivery of a particular product. * Increase the quantity of the product by the given amount. * @param id The ID of the product. * @param amount The amount to increase the quantity by. */ public void delivery(int id, int amount) { if(amount < 1){ System.out.println("Invalid amount."); return; } Product p = findProduct(id); if(p != null){ p.increaseQuantity(amount); } else{ System.out.println("Can't find product."); } return; } /** * Try to find a product in the stock with the given id. * @return The identified product, or null if there is none * with a matching ID. */ public Product findProduct(int id) { Iterator<Product> it = stock.iterator(); while(it.hasNext()){ Product tempProduct = it.next(); if(tempProduct.getID() == id){ return tempProduct; } } return null; } /** * Locate a product with the given ID, and return how * many of this item are in stock. If the ID does not * match any product, return zero. * @param id The ID of the product. * @return The quantity of the given product in stock. */ public int numberInStock(int id) { return 0; } /** * Print details of all the products. */ public void printProductDetails() { for(Product product: stock){ System.out.println(product.toString()); } } }
The product class:
public class Product { // An identifying number for this product. private int id; // The name of this product. private String name; // The quantity of this product in stock. private int quantity; /** * Constructor for objects of class Product. * The initial stock quantity is zero. * @param id The product's identifying number. * @param name The product's name. */ public Product(int id, String name) { this.id = id; this.name = name; quantity = 0; } /** * @return The product's id. */ public int getID() { return id; } /** * @return The product's name. */ public String getName() { return name; } /** * @return The quantity in stock. */ public int getQuantity() { return quantity; } /** * @return The id, name and quantity in stock. */ public String toString() { return id + ": " + name + " stock level: " + quantity; } /** * Restock with the given amount of this product. * The current quantity is incremented by the given amount. * @param amount The number of new items added to the stock. * This must be greater than zero. */ public void increaseQuantity(int amount) { if(amount > 0) { quantity += amount; } else { System.out.println("Attempt to restock " + name + " with a non-positive amount: " + amount); } } /** * Sell one of these products. * An error is reported if there appears to be no stock. */ public void sellOne() { if(quantity > 0) { quantity--; } else { System.out.println( "Attempt to sell an out of stock item: " + name); } } }
I have been able to convert the ArrayList in the StockManager class to an Array:
public class StockManager { // A list of the products. private Product [] stock; /** * Initialise the stock manager. */ public StockManager() { stock = new Product [10]; }
I am not able to compile the addProduct method so it will work with my Array.