我对编码很陌生。这是我的第一堂课,它是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,名称,价格和数量,如果这有助于我启动产品对象。
建议将是精彩的或提示,任何真正帮助我前进并弄清楚并学习的东西。非常感谢。
答案 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循环进行迭代更为实际,该索引已在示例代码中使用过。