使用面向对象的概念表示出下面的生活场景:
小王到书店买书,所买的书都放在了购物车之中,最后到收银台一起结账。
要求:
    1、加入异常的处理操作;
    2、将不同的功能在不同的类中实现,不同的类放在不同的包中,并严格遵循命名规范的要求。
运行时候,老出现Exception   in   thread   "main "   java.lang.NoClassDefFoundError: 这样的问题。
请问这道题怎么做呢?

解决方案 »

  1.   

    interface Goods{ // 商品
    public float getPrice() ;
    public String getName() ;
    }
    class ShopCar{ // 购物车
    private Goods goods[] ; // 保存商品
    private int foot ; 
    public ShopCar(int len){
    if(len>0){
    this.goods = new Goods[len] ;
    }else{
    this.goods = new Goods[1] ; // 至少保持一个大小
    }
    }
    public void add(Goods goods){ // 向里面增加商品
    if(this.foot<this.goods.length){
    this.goods[this.foot++] = goods ; // 添加商品
    }
    }
    public float check(){
    float count = 0.0f ;
    for(int x=0;x<this.goods.length;x++){
    if(this.goods[x]!=null){
    count += this.goods[x].getPrice() ;
    }
    }
    return count ;
    }
    public Goods[] getGoods(){
    return this.goods ;
    }
    }
    class Book implements Goods{
    private float price ;
    private String name ;
    public Book(float price,String name){
    this.name = name ;
    this.price = price ;
    }
    public void setName(String name){
    this.name = name ;
    }
    public void setPrice(float price){
    this.price = price ;
    }
    public String getName(){
    return this.name ;
    }
    public float getPrice(){
    return this.price ;
    }
    }
    public class ExecDemo06{
    public static void main(String args[]){
    ShopCar sc = new ShopCar(5) ;
    sc.add(new Book(79.8f,"Java开发")) ;
    sc.add(new Book(89.8f,"Java WEB 开发")) ;
    sc.add(new Book(99.8f,"Oracle 开发")) ;
    sc.add(new Book(39.8f,"HTML和网页制作")) ;
    for(int x=0;x<sc.getGoods().length;x++){
    if(sc.getGoods()[x]!=null){
    System.out.println(sc.getGoods()[x].getName() + " --> " + sc.getGoods()[x].getPrice()) ;
    }
    }
    System.out.println("结帐:" + sc.check()) ;
    }
    }将此问题按要求改变
      

  2.   

    这个代码是完全正确的。
    之所以出现你说的异常,原因如下:
    1.运行程序时,ExecDemo06.java对应的ExecDemo06.class类文件找不到。java文件会首先被编译器编译成class文件,然后才能运行在java虚拟机上了,你删掉了class文件,当然就不能正常运行程序了。实际运行的是该class文件而不是java文件。解决方法:不知道你用的什么编辑器,假设是Eclipse吧。
    在Eclipse中:
    1.Eclipse->project->clean->ok,把项目clean一下,会重新生产class文件,然后就可以正常运行了。查看对应的calss文件是否存在,右击ExecDemo06.java文件,选择show in->navigator 查看bin目录下,是否存在对应的class文件。不存在就会抛出java.lang.NoClassDefFoundError异常。
      

  3.   

    NoClassDefFoundError
    说的很清楚了,自己动手丰衣足食