2015-09-20 45 views
1

所以我所做的就是创建3类:1。 库类(主) 2. Book类(我创建其主类的对象实例) 3. LibraryException(只是为了处理异常)如何使用类定义数组并为其添加值(预定义参数)?

不过我百思不得其解,我无法弄清楚如何使用在书类设置的参数/设置数组,这里是我的程序:

public class Library 
{ 
    String name; 
    Book[] books; 
    int nrBookz = 0; 

    public Library(String name, int nrBookz) throws LibraryException { 
     if(nrBookz < 500){ 
      throw new LibraryException(); 
     } 
     this.name = name; 
     this.nrBookz = nrBookz; 


    } 


    public void addBook(Book Book) throws LibraryException { 
     if(indexOf(Book) == -1){ 
      if(nrBookz < books.length){ 
       books[nrBookz++] = Book; 
      } 
     } 
    } 


    private int indexOf(Book Book)throws LibraryException { 
     for(int i = 0; i < books.length; i++){ 
      if(books[i] == null){ 
       throw new LibraryException("That book does not exist!"); 
      } 

      else if(books[i].equals(Book)){ 
       return i; 
      } 
     } 
     return -1; 
    } 

    public static void main(String[]args) throws LibraryException{ 
     Library b = new Library("Sami Frasheri", 750); 
     **b.addBook(new Book("Paul Colhen - Alchemist", 138)); 
     b.addBook(new Book("Paul Colhen - Winners Stand ALone", 139)); 
     b.addBook(new Book("Paul Colhen - The river Piedra I sat and I cried", 140));** 
    } 
} 

public class Book { 
    String name; 
    int isbn; 


    public Book(String e, int iNr) throws LibraryException{ 
     if(e == ""){ 
      throw new LibraryException("Book name is not allowed to be blank/empty!!"); 
     } 

     else if(iNr < 1 || iNr > 9000){ 
      throw new LibraryException("The isbn is not within the allowed range (1 - 9000)! "); 
     } 
     name = e; 
     isbn = iNr; 
    } 


    public boolean equals(Object obj){ 
     if(obj instanceof Book){ 
      Book p = (Book)obj; 
      return name.toLowerCase().equals(p.getName().toLowerCase()); 
     } 
     return false; 
    } 



    public String getName() { 
     if(name == null || name == ""){ 
      System.out.print("name (Book) EXCEPTION TO BE ADDED!"); 
     } 
     return name; 
    } 

    public void setname(String name) { 
     this.name = name; 
    } 

    public int getIsbn() { 
     if(isbn < 0){ 
      System.out.print("ISBN (Book) EXCEPTION TO BE ADDED!"); 
     } 
     return isbn; 
    } 

    public void setIsbn(int isbn) { 
     this.isbn = isbn; 
    } 

} 

所以我的问题是:我如何添加(书籍)或使其可能被添加到书籍数组? (见的打击 - 在我创建新库(类库的对象)*带有大胆的主要方法(Library类)

回答

0

你缺少的数组初始化:

public Library(String name, int nrBookz) throws LibraryException { 
    if(nrBookz < 500){ 
     throw new LibraryException(); 
    } 
    this.name = name; 
    this.nrBookz = nrBookz; 
    this.books = new Book[nrBookz]; // add this 

} 
+0

噢,我的..我很惭愧。我想这样做的正常方式只是 '书=新集[nrBookz]“这个”' 完全忘了用... 非常感谢你,这么简单的事却浪费了更多的时间在我身上比它的整个休息...该死的... 再次感谢你^^ – ShabanCoder

+0

@ShabanCoder实际上,'books = new Book [nrBookz]'也应该可以工作,假设你的'Library'构造函数没有名为'books'的局部变量。 – Eran

+0

我很困惑..它确实有效,没有这个。也是,idk早些时候给了我一个错误,我可能会错过输入它或idk的东西。我是Java新手,所以你不得不原谅我。 反正非常感谢你救了我^^ – ShabanCoder

相关问题