将我的Product对象转换为数组 - Java

时间:2015-03-21 19:58:25

标签: java arrays

我对编码很陌生。这是我的第一堂课,它是Java的简介。我被困在任务的一部分 - 不知道该去哪里。

我有一个库存程序,它有一个Product类和一个Stock类。库存类需要能够在方法中使用数组中的产品对象1)判断产品是否有库存。它的sku。 2)使用sku返回数量3)添加或删除库存产品。

这听起来很简单,但我不理解它。我已经在互联网上搜索并阅读我的书几周无济于事,所以我想我会尝试一下。

我的产品类包含qty,sku,price,name

的常用get / set方法

这是我的Stock类:

public class Stock 
{
private static final int MAX = 100;
int currentNoOfProd = 0; 
Product[] productsArray = new Product[MAX];

//I need an empty stock array constructor

/*  public Stock (int[] stockArray)
{
 this.productsArray = stockArray;
}*/


//method to tell if Product is in Stock with SKU

public void inStock()
{
    for(int i = 0; i< MAX; i++)
    {
        System.out.println("testing stock inventory\n" + productsArray[i].getSKU());

        if (productsArray[i].getQty() > 0)
        {
            System.out.println("In Stock");
        }

    }
}

//return the quantity of a Product given its SKU
public void  qtyInStock()
{
    for(int i=0; i< MAX; i++)
    {
        System.out.println("in qtyInStock loop\n" + productsArray[i].getSKU());
        System.out.println("getting quantity qtyInStock" + productsArray[i].getQty());

    }

}


//add or remove a Product from Stock

} 我的股票类只是我测试想法尝试做/某事/但是在这一点上我完全迷失了。这可能很模糊,但我不知道我能得到多少具体内容。

我很难在我的驱动程序中编写sku,名称,价格和数量,如果这有助于我启动产品对象。

建议将是精彩的或提示,任何真正帮助我前进并弄清楚并学习的东西。非常感谢。

2 个答案:

答案 0 :(得分:0)

你应该使用Collection,e。 G。 ArrayList<Product>代替Product[].您的广告资源不具有固定的尺寸,您将获得一些有用的API,例如list.add(product), list.contains(product)等。

答案 1 :(得分:0)

有些指针希望能指导你前进:

<强> 1。 Stock

中的实例变量

默认情况下,您应该始终使用&#34;最不可见的&#34;范围,即private,在您的实例变量中。这意味着Product[] productsArray应替换为private Product[] productsArray。私有作用域中的变量只能由包含类访问,当类是较大的应用程序的一部分并且您正在调试时,这是一件好事。

<强> 2。告知产品是否有货的方法

您的inStock()方法目前既没有使用&#34; SKU&#34; (库存单位)输入或返回任何东西给呼叫者。将方法签名更改为

似乎更好
public boolean inStock(String sku)

代替。 productsArray上的迭代看起来没问题,即使您可以使用for-each构造使其更简洁,该构造从Java 5开始可用(阵列在创建后知道它的大小):

for (Product p : productsArray) {
  // you can use p.getQty() and p.getSKU() within the loop
  ...
}

请注意,因为您的数组可以/将包含null元素,所以在调用p != null上的任何方法之前,应检查p。基本上,当您找到具有正数量和给定&#34; SKU&#34;的匹配时,您只需要从循环返回true。否则,在方法结束时返回false,因为未找到匹配项。

第3。退货数量

方法签名应更改为

public int qtyInStock(String sku)

如果我们假设productsArray只为给定的&#34; SKU&#34;只保留一个Product,那么您可以简单地遍历数组并返回产品的数量(如果有的话)找到。

<强> 4。在Stock中添加或删除产品。

您可能希望将此要求分为两种不同的方法:一种用于添加,另一种用于从库存中删除内容。例如:

public void addProduct(Product p)

public void removeProduct(Product p)

这些是更难实现的方法,因为它们需要操纵底层的productsArray。此外,在现实生活中,如果出现意外情况(空间库存,产品没有库存等),该方法可能会抛出Exception

如果我们假设您的MAX数组大小足够大,并且您只存储一个Product每个&#34; SKU&#34;在数组中,基本上你需要:

添加产品时:迭代阵列并尝试使用&#34; SKU&#34;匹配输入产品&#34; SKU&#34;。如果找到匹配项,则根据输入产品的数量增加数量;否则将产品存储在数组中的第一个可用插槽(productsArray[i] == null)中。

删除产品时:如果在数组中找到匹配项,只需使用null将其设置为productsArray[i] = null

请注意,在这些数组修改方法中,使用跟踪索引(for (int i = 0; i < MAX; i++))的for循环进行迭代更为实际,该索引已在示例代码中使用过。