我有一个 StockList 类,其中包含一个链接列表,可以使用多种方法控制库存。但是,我一直不知道要在 updateItemPrice 方法的方法体内放入什么内容。 我是否需要使用 setter 来设置新商品的价格,如果需要,我该怎么做?
这是我到目前为止的代码,任何帮助将不胜感激!
import java.util.*;
public class StockList {
{
private LinkedList<StockItem> stock
= new LinkedList<StockItem>();
public StockList() {};
// Adds item to end of stock list
public void addItem(StockItem item)
{
this.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() == itemID)
{
stock.remove(itr.previousIndex());
break;
}
}
}
// Updates price of existing item
public void updateItemPrice(String itemID, double price)
{
???
}
// Updates quantity of existing item
public void updateItemQuantity(String itemID, int quantity)
{…}
// Updates re-order level of existing item
public void updateReOrderLevel(String itemID,
int reOrderLevel)
{…}
// 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()
{…}
}
}
最佳答案
StockItem
需要有 setter 方法来设置价格,如 setPrice
ListIterator itr = stock.listIterator();
while(itr.hasNext())
{
StockItem item = (StockItem)itr.next();
if(item.getitemID() == itemID)
{
item.setPrice(price);
break;
}
}
但是您的删除代码也存在问题...
public void deleteItem(String itemID)
{
ListIterator itr = stock.listIterator();
while(itr.hasNext())
{
StockItem item = (StockItem)itr.next();
if(item.getitemID() == itemID)
{
stock.remove(itr.previousIndex());
break;
}
}
}
这会给您带来并发访问异常
。请改用下面的代码。
public void deleteItem(String itemID)
{
ListIterator itr = stock.listIterator();
while(itr.hasNext())
{
StockItem item = (StockItem)itr.next();
if(item.getitemID() == itemID)
{
itr.remove(); // Removes last obejct returned by itr.next()
break;
}
}
}
关于java - 卡在 java setter 方法上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16304077/