Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于如何将项目添加到库存列表的问题_Java_Interface_Linked List - Fatal编程技术网

Java 关于如何将项目添加到库存列表的问题

Java 关于如何将项目添加到库存列表的问题,java,interface,linked-list,Java,Interface,Linked List,我已经用java创建了一个库存控制程序,但是我仍然停留在用户输入部分。 用户需要能够从界面的主菜单中选择“添加项目”,并从中输入项目的ID、说明、价格、数量和重新订购级别,然后选择是否要添加其他项目,或退出主菜单 我已经在一组扫描仪中编码,以读取条目属性的输入,但不确定如何将它们添加到我的库存列表中,也不确定如果用户想要添加其他条目或导航回主菜单,我应该使用什么类型的循环 有人知道如何最好地解决这两个问题吗?如有任何建议/解决方案,将不胜感激。 谢谢 库存商品代码: public class S

我已经用java创建了一个库存控制程序,但是我仍然停留在用户输入部分。 用户需要能够从界面的主菜单中选择“添加项目”,并从中输入项目的ID、说明、价格、数量和重新订购级别,然后选择是否要添加其他项目,或退出主菜单

我已经在一组扫描仪中编码,以读取条目属性的输入,但不确定如何将它们添加到我的库存列表中,也不确定如果用户想要添加其他条目或导航回主菜单,我应该使用什么类型的循环

有人知道如何最好地解决这两个问题吗?如有任何建议/解决方案,将不胜感激。 谢谢

库存商品代码:

public class StockItem {

String itemID;
String itemDesc;
Double price;
int quantity;
int reOrderLevel;
//declaring my instance variables


public StockItem (String itemID, String itemDesc, Double price, int quantity, int reOrderLevel)
{       
        this.itemID = itemID;
        this.itemDesc = itemDesc;
        this.price = price;
        this.quantity = quantity;
        this.reOrderLevel = reOrderLevel;
}
//declaring a contructor with 5 parameters for my instance variables



public String getitemID() {
    return itemID;
}

public String getitemDesc() {
    return itemDesc;
}

public Double getprice() {
    return price;
}

public int getquantity() {
    return quantity;
}

public int getreOrderLevel() {
    return reOrderLevel;
}

//creating my getters for all instance variables


public void setprice(Double price) {
    this.price = price;
}

public void setquantity(int quantity) {
    this.quantity = quantity;
}

public void setreOrderLevel(int reOrderLevel) {
    this.reOrderLevel = reOrderLevel;
}

//creating my setters for 3 instance variables


public String toString()
{
    return getClass().getName() + "itemID: " + itemID + "itemDesc: " + itemDesc + "price:     "
            + price + "quantity: " + quantity + "reOrderLevel: " + reOrderLevel;
}


//public String format() {}





}
存货清单:

import java.util.*;
public class StockList 
{
public static LinkedList<StockItem> stock
        = new LinkedList<StockItem>();


public StockList() {};


// Adds item to end of stock list
public void addItem(StockItem item) 
{
    StockList.stock.addLast(item);
}


// Removes item identified by productID from stock list
public void deleteItem(String itemID) 
{
    ListIterator itr = stock.listIterator();
while(itr.hasNext())
 {
            StockItem item = (StockItem)itr.next();
    if(item.getitemID().equals(itemID))
    {
                    itr.remove();
        break;
    }
    }
}


// Updates price of existing item
public void updateItemPrice(String itemID, double price) 
{
    ListIterator itr = stock.listIterator();
    while(itr.hasNext())
    {
        StockItem item = (StockItem)itr.next();
        if(item.getitemID().equals(itemID))
        {
            item.setprice(price);
            break;
        }
    }

}


// Updates quantity of existing item
public void updateItemQuantity(String itemID, int quantity) 
{
    ListIterator itr = stock.listIterator();
    while(itr.hasNext())
    {
        StockItem item = (StockItem)itr.next();
        if(item.getitemID().equals(itemID))
        {
            item.setquantity(quantity);
            break;
        }
    }
}


// Updates re-order level of existing item
public void updateReOrderLevel(String itemID, 
int reOrderLevel) 
{
    ListIterator itr = stock.listIterator();
    while(itr.hasNext())
    {
        StockItem item = (StockItem)itr.next();
        if(item.getitemID().equals(itemID))
        {
            item.setreOrderLevel(reOrderLevel);
            break;
        }
    }
}


@Override public String toString()
{
  return "" + stock;

}

// Returns formatted representation of the stock list
//  public String formatStockList()
// {…}


// Returns formatted representation of re-order list
// Items are on this list if quantity < reOrderLevel
//  public String formatReOrderList()
//  {…}

ListIterator listIterator() {
    throw new UnsupportedOperationException("Not yet implemented");
}



}
StockListApp:

import java.util.*;
public class StockListInterface
{
private StockList stock = null;

public StockListInterface(StockList stock){}

// Displays main menu and gets valid option from user
public void doMenu()
{
    System.out.println("StockList Main Menu");
    System.out.println("*******************");
    System.out.println("1. Add an Item");
    System.out.println("2. Delete an Item");
    System.out.println("3. Update Item Price");
    System.out.println("4. Update Item Quantity");
    System.out.println("5. Update ReOrder Level");
    System.out.println("6. Print Stock List");
    System.out.println("7. Print ReOrder List");
    System.out.println("8. Exit");

    System.out.println("Select option [1-8] :>");
}


// Obtain input for stock list operation
// and invoke operation 

private void doAddItem(StockItem item) 
{
    StockList.stock.addLast(item);
}

private void doDeleteItem(String itemID)
{
    ListIterator itr = stock.listIterator();
while(itr.hasNext())
 {
            StockItem item = (StockItem)itr.next();
    if(item.getitemID().equals(itemID))
    {
                    itr.remove();
        break;
    }
    }





private void doUpdateItemPrice(String itemID, double price)
{
    ListIterator itr = stock.listIterator();
    while(itr.hasNext())
    {
        StockItem item = (StockItem)itr.next();
        if(item.getitemID().equals(itemID))
        {
            item.setprice(price);
            break;
        }
    }
}


private void doUpdateItemQuantity(String itemID, int quantity)
{
    ListIterator itr = stock.listIterator();
    while(itr.hasNext())
    {
        StockItem item = (StockItem)itr.next();
        if(item.getitemID().equals(itemID))
        {
            item.setquantity(quantity);
            break;
        }
    }
}

private void doUpdateReOrderLevel(String itemID, int reOrderLevel)
{
    ListIterator itr = stock.listIterator();
    while(itr.hasNext())
    {
        StockItem item = (StockItem)itr.next();
        if(item.getitemID().equals(itemID))
        {
            item.setreOrderLevel(reOrderLevel);
            break;
        }
    }
}

// Display contents of stock list
private void doPrintStockList() {}

// Display contents of re-order list
private void doPrintReorderLIst() {}
}

首先有几点评论:

StockItem中的实例变量应该是私有的

StockList有一个公共构造函数,但使用一个静态列表-这意味着StockList的所有实例共享同一个列表-除非这是您想要的(我想不是),否则应该使该列表非静态。因此,只需将其设置为私有成员变量

StockListInterface也应该是一个实际的接口,如果这是您的意图的话

public interface StockList {
    public void addItem(StockItem item); 
    public void deleteItemById(String itemID); 
    // Updates price of existing item
    public void updateItemPrice(String itemID, double price);
    /// etc.
}
注意,我建议使用deleteItemById,因为您可以轻松提供一个名为deleteItem的方法,该方法接受StockItem,addItem将StockItem作为参数而不是字符串。 然后做一个实现(在我看来,这似乎有些过分,但这两种方式都有争议),如果是我的话,一个简单的StockList类在这里就足够了

public class StockListImpl implements StockList {

   private List<StockItem> stockList = new LinkedList<StockItem>();

   public void addItem(StockItem item) {
         stockList.add(item);
   }

  //etc...

记得当用户选择退出时,调用Scult.CeleU.(.P/> > POST)相关的代码。SturtListApp和SturtListPo界面看起来相同的复制粘贴,只考虑粘贴相关代码。企业模式是非常感谢的,这解决了我正在经历的所有问题!!

public class StockListImpl implements StockList {

   private List<StockItem> stockList = new LinkedList<StockItem>();

   public void addItem(StockItem item) {
         stockList.add(item);
   }

  //etc...
private List<StockItem> = new LinkedList<StockItem>();
public void removeItemById(String itemId) {
   Iterator<StockItem> itr = stockList.listIterator();
   while(itr.hasNext()) {
       StockItem item = itr.next();
   if(item.getitemID().equals(itemId)) {
     itr.remove();
     break;
    }
   }
}
class StockListApp {

private static Scanner scanner = new Scanner(System.in);

private static final int ADD_ITEM = 1;
private static final int DELETE_ITEM = 2;

private StockListApp() {}

public static void displayRootMenu() {
     System.out.println("StockList Main Menu");
     System.out.println("*******************");
     System.out.println("1. Add an Item");
     System.out.println("2. Delete an Item");
     System.out.println("3. Update Item Price");
     System.out.println("4. Update Item Quantity");
     System.out.println("5. Update ReOrder Level");
     System.out.println("6. Print Stock List");
     System.out.println("7. Print ReOrder List");
     System.out.println("8. Exit");

     System.out.println("Select option [1-8] :>");
     int choice = scanner.nextInt();
     displaySubMenu(choice);
}

private static void displayAddItemMenu() {
    // display menu and read next char from scanner.
}

private static void displayDeleteMenu() {
    // display menu and read next char from scanner.
}


private static void displaySubMenu(int option) {

    switch (option) {
      case StockListApp.ADD_ITEM: {
          displayAddItemMenu();
          break;
      }
      case StockListApp.DELETE_ITEM: {
          displayDeleteMenu();
          break;
      }
    }

}

}