2014-02-16 11 views
0

我正在编写一个java库存问题的补充,它使用arraylist来编写方法来在库存中添加,搜索等项目。如何在arraylist中使用之前定义的类

我正在使用另一个名为InventoryItem的类,它具有sku,itemName,price和stock的变量。

我想知道如果我在正确的轨道上使用一个前面定义的类来编写一个方法来添加一个项目。

import java.util.*; 

public class Warehouse { 

     private ArrayList<InventoryItem> inventory = new ArrayList<InventoryItem>(); 

     public static void addItem(InventoryItem i) 

      inventory.add(i); 

     } 

     public static void main(String [] args) { 

      addItem();  

     } 
} 

这是InventoryItem类;

public class InventoryItem { 

    private int sku; 
    private String itemName; 
    private double price; 
    private int stock; 



    public InventoryItem (int sku, String itemName, double price, int stock) { 

    this.sku = sku;  
    this.itemName = itemName; 
    this.price = price; 
    this.stock = stock; 

} 

    public int getSku() { 

     return sku; 

    } 


    public String getitemName() { 

     return itemName; 

    } 

    public void setPrice (double price) { 

     this.price = price; 

    } 

    public double getPrice() { 

     return price; 

    } 

    public void setStock(int stock) { 

     this.stock = stock; 

    } 


    public int getStock() { 

     return stock; 

    } 
    @Override 
    public String toString() { 

     return String.format("[%d ,%s ,%1.2f ,%d]", sku, itemName, price, stock); 

    } 

    public static void main(String[] args) { 
     InventoryItem itemName = new InventoryItem(1, "asdf", 2.4, 5); 
     System.out.println(itemName); 

    } 

} 
+0

好的,谢谢你们。我不明白我必须在Warehouse类中创建实例变量。 – user2713971

回答

2

addItem()方法的主要问题是,它是static,所以不会能够访问warehouse列表,该列表是只能从实例访问的实例变量。

要解决这个问题(等)的问题,试试这个:

public class Warehouse { 
    private List<InventoryItem> inventory = new ArrayList<InventoryItem>(); 

    public void addItem(InventoryItem i) 
     inventory.add(i); 
    } 

    public static void main(String [] args) { 
     // create a Warehouse instance 
     Warehouse warehouse = new Warehouse(); 
     // create an InventoryItem instance 
     InventoryItem i = new InventoryItem(sku, itemName, price, stock); 
     // add the InventoryItem to the Warehouse 
     warehouse.addItem(i);  
    } 
} 
+0

这是一个很好的观点,值得一提。 – ThePerson

1

你是对的。当你调用addItem()方法时,你需要传递一个InventoryItem对象。因此,也许更多的东西一样:

double sku = 111; 
String itemName = "someItem"; 
double price = 2.99; 
int stock = 1; 

InventoryItem inventoryItem = new InventoryItem(sku, itemName, price, stock); 
addItem(inventoryItem); 

当然,你需要确保你在你的InventoryItem类的构造函数这需要在您需要的PARAMS。

所以,根据你的InventoryItem类,并从波希米亚额外以下提示会是这样的:

 import java.util.ArrayList; 
    import java.util.List; 

    public class Warehouse { 
     private List<InventoryItem> inventory = new ArrayList<InventoryItem>(); 

     public void addItem(InventoryItem i) { 
     inventory.add(i); 
    } 

    public static void main(String [] args) { 
     // create a Warehouse instance 
     Warehouse warehouse = new Warehouse(); 
     // create an InventoryItem instance 

     int sku = 111; 
     String itemName = "someItem"; 
     double price = 2.99; 
     int stock = 1; 

     InventoryItem i = new InventoryItem(sku, itemName, price, stock); 
     // add the InventoryItem to the Warehouse 
     warehouse.addItem(i);  
    } 
} 
+0

所以,我有一个包含这些变量的“InventoryItem”类。是否可以将该类用作数组列表中的参数? – user2713971

+0

您已经创建了一个包含InventoryItem类型(您看起来正确)的对象的数组列表,您现在只需要为其添加库存项目。也许如果你发布InventoryItem类,我可以给你一个工作的例子。 – ThePerson

+0

好的,我发布了InventoryItem类 – user2713971

相关问题