Fra*_*ank 1 java arrays object
我正在开发一个库管理程序(它是一个在线课程的作业),我无法在运行时解决nullpointerexception错误.
这是迄今为止的计划:
//file Library.java
public class Library {
String address;
Book[] collection;
int collectionCounter = 0;
// Add the missing implementation to this class
public static void main(String[] args)
{
// Create two libraries
Library firstLibrary = new Library("10 Main St.");
Library secondLibrary = new Library("228 Liberty St.");
// Add four books to the first library
firstLibrary.addBook(new Book("The Da Vinci Code"));
firstLibrary.addBook(new Book("Le Petit Prince"));
firstLibrary.addBook(new Book("A Tale of Two Cities"));
firstLibrary.addBook(new Book("The Lord of the Rings"));
}
//Constructor
public Library(String libraryName)
{
address = libraryName;
collectionCounter = 0;
}
//Methods
public void addBook(Book newBook)
{
System.out.println(this.collectionCounter);
this.collection[this.collectionCounter] = newBook;
this.collectionCounter += 1;
}
Run Code Online (Sandbox Code Playgroud)
和另一个.java文件,为Book类:
public class Book {
String title;
boolean borrowed;
// Creates a new Book
public Book(String bookTitle) {
// Implement this method
title = bookTitle;
borrowed = false;
}
// Marks the book as rented
public void rented() {
// Implement this method
this.borrowed = true;
}
// Marks the book as not rented
public void returned() {
// Implement this method
this.borrowed = false;
}
// Returns true if the book is rented, false otherwise
public boolean isBorrowed() {
// Implement this method
return this.borrowed;
}
// Returns the title of the book
public String getTitle() {
return this.title;
}
public static void main(String[] arguments) {
// Small test of the Book class
Book example = new Book("The Da Vinci Code");
System.out.println("Title (should be The Da Vinci Code): " + example.getTitle());
System.out.println("Borrowed? (should be false): " + example.isBorrowed());
example.rented();
System.out.println("Borrowed? (should be true): " + example.isBorrowed());
example.returned();
System.out.println("Borrowed? (should be false): " + example.isBorrowed());
}
Run Code Online (Sandbox Code Playgroud)
}
这是程序输出:
0
Exception in thread "main" java.lang.NullPointerException
at Library.addBook(Library.java:59)
at Library.main(Library.java:14)
Run Code Online (Sandbox Code Playgroud)
我理解错误是由书籍数组引起的,但我真的不知道该怎么做,我从未见过将对象实例化作为方法的参数.提前致谢!
您必须创建数组collection才能将任何内容放入其中.更换
Book[] collection;
Run Code Online (Sandbox Code Playgroud)
通过
Book[] collection = new Book[BOOK_COLLECTION_SIZE];
Run Code Online (Sandbox Code Playgroud)
有BOOK_COLLECTION_SIZE是一个相当高的数字.
更好的是,使用一个List而不是一个数组.这样您就不必事先猜测您的库大小:
List<Book> collection = new LinkedList<Book>();
Run Code Online (Sandbox Code Playgroud)
然后addBook可以看起来像这样:
public void addBook(Book newBook)
{
this.collection.add(newBook);
}
Run Code Online (Sandbox Code Playgroud)
你可以摆脱collectionCounter.如果您真的需要书籍数量,可以使用它this.collection.size().
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |