【发布时间】:2014-12-29 05:32:05
【问题描述】:
我已经研究这个添加方法代码几个小时了,我无法理解它......任何提示/帮助就足够了。
我有一个 Bin 类,它生成 BinItems 的 ArrayList。 BinItem 类接受一个 String SKU 及其 int 数量。 Bin类中的“add”方法应该做的是查看Bin中是否已经有一个具有相同SKU的BinItem,如果有,那么它将添加数量。
这里是给我的说明“添加方法的修改版本。我们现在需要这个方法操作如下:当被要求添加一个bin item b时,它首先检查bin是否已经包含一个bin与 b 具有相同 SKU 的项目。如果是,则删除已在 bin 中的 bin 项目 a,并添加一个新的 bin 项目,其数量是 a 和 b 的数量之和。如果没有这样bin item 已经在 bin 中,然后 bin item b 以通常的方式添加。"
我不能修改其他类,我只能修改Bin类中的3个方法:remove、totalQuantity和add。我的主要问题是我不确定如何在 add 方法中创建一个新的 BinItem 来增加数量并删除所有类似的 SKU。
这是我的 Bin 码
public class Bin {
private String myName;
private ArrayList<BinItem> myContents;
public Bin ( String name )
{
myName = name;
myContents = new ArrayList <BinItem>();
}
public ArrayList <BinItem> getContents()
{
return myContents;
}
public String getName()
{
return myName;
}
public void remove (int b)
{
myContents.remove(b);
}
public int totalQuantity()
{
int x = 0;
for (int i = 0; i< myContents.size(); i++)
{
x += myContents.get(i).getQuantity();
}
return x;
}
public void add ( BinItem b)
{
BinItem a = b;
myContents.add(a);
for (int x = 0; x < myContents.size(); x++)
{
if (a.getSKU().equals(b.getSKU()))
myContents.remove(a);
}
}
public String toString()
{
String s = "Bin " + myName + ":\n";
for ( BinItem b : myContents )
s += b + "\n";
return s;
}
}
BinItem 代码
public class BinItem {
private String mySKU;
private int myQuantity;
public BinItem ( String sku, int quantity)
{
mySKU = sku;
myQuantity = quantity;
}
public String getSKU()
{
return mySKU;
}
public int getQuantity()
{
return myQuantity;
}
public String toString()
{
return "SKU " + getSKU() + ": " + getQuantity();
}
}
主要代码
public static void main( String[] args )
{
Bin bin = new Bin( "A" );
bin.add( new BinItem( "1234-0", 500 ) );
bin.add( new BinItem( "1234-1", 25 ) );
bin.add( new BinItem( "1234-0", 243 ) );
bin.add( new BinItem( "1234-2", 7720 ) );
bin.add( new BinItem( "1234-0", 871 ) );
System.out.println( bin );
}
预期结果
Bin A:
SKU 1234-1: 25
SKU 1234-2: 7720
SKU 1234-0: 1614
[The bin items may be listed in a different order.]
【问题讨论】:
-
是的,我尝试删除那个但不能。我必须澄清一下,我只能修改类中的以下方法之类的东西,而不能修改其他类。