java 里面编写网上购物车的问题

现在要用java实现网上购物车的功能
主要有ShopCar.java和ShopCarItem.java两个实现
-----------------------------------------------------------
这是ShopCarItem.java代码
package tom.jiafei;
public class ShopCarItem
{Object item;
int quantity;
public ShopCarItem(Object anItem)
{item=anItem;
quantity=1;}
public void incrementQuantity()
{quantity++;}
public void decrementQuantity()
{quantity--;}
public Object getItem()
{return item;}
public int getQuantity()
{return quantity;}
}
编译通过成为.class文件的
------------------------------------------
问题来了
package tom.jiafei;
import java.util.*;
public class ShopCar
{HashMap items=null;
int numberOfItems=0;
public ShopCar()
{items=new HashMap();}
public synchronized void add(String bookid, BookDetail book)
{
if(items.containsKey(bookid))
{ShopCarItem scitem=(ShopCarItem)items.get(bookid);
scitem.incrementQuantity();}
else{ShopCarItem newItem=new ShopCarItem(book);
items.put(bookid,newItem);}

numberOfItems++;
}
public synchronized void remove(String bookid)
{
if(items.containsKey(bookid)){
ShopCarItem scitem=(ShopCarItem)items.get(bookid);
scitem.decrementQuantity();
if(scitem.getQuantity()<=0)
items.remove(bookid);
numberOfItems--;
}
}

public synchronized Collection getItems()
{return items.values();}
protected void finalize() throws Throwable{
items.clear();
}

public synchronized int getNumberOfItems()
{return numberOfItems;}

public synchronized double getTotal()
{ double amount=0.0;
for(Iterator i=getItems().iterator();i.hasNext();)
{ShopCarItem item=(ShopCarItem)i.next();
BookDetail bookDetails=(BookDetail)item.getItem();
amount+=item.getQuantity()*bookDetails.getPrice();
}
return roundOff(amount);
}

private double roundOff(double x)
{long val=Math.round(x*100);
return val/100.0;}

public synchronized void clear()
{
items.clear();
numberOfItems=0;
}

}
这是ShopCarItem.java文件
-------------------------------------------
这是dos截图
一直说BookDetail book和ShopCarItem找不到,大家帮帮忙
第一个错明白了,第二个错能不能讲详细点

有两个地方错了:
主要的一个错误是BookDetail类不存在,而你在ShopCar
类中引用了BookDetail,得写一个这样的类才行。

第二个错误的地方为你在类中使用了包,如果使用包的话就不能像一般的类那样直接使用javac 类名.java这样的形式编译了。
而要使用 javac -d . 类名.java才行,其中的-d .的意思是把输出的.class文件放以包名称的形式到当前文件夹下,当然你也可以输入其它路径也是可以的。

运行的话使用java 包名+类名就可以了,其中是以.分开包和类名称的。

看一下javac的帮助和java的帮助,里面说的很明白的。
编译的时候使用javac -d . 类名.java
运行的时候 java 包名.类名
注意如果包里又有子包的话运行的时候包与子包使用.分隔开来
温馨提示:答案为网友推荐,仅供参考
相似回答