このコードを実行すると、NULLポインタが返されます。その自明の2つのクラスは、本と図書館をモデル化するために使用されます。オブジェクトの配列を使用しているときにJavaのNULLポインタ例外が発生しました
私が間違っている場所を誰かが教えてくれれば幸いです。
public class Library {
private String address;
private final static String workinghours = "9AM to 5PM";
private Book[] bookcollection = new Book[6];
private static int numberofbooks = 0;
public Library(String libraryaddress) {
address = libraryaddress;
}
public static void printOpeningHours() {
System.out.println(workinghours);
}
public void addBook(Book newaddition) {
bookcollection[numberofbooks] = newaddition;
numberofbooks++;
}
public void printAddress() {
System.out.println(address);
}
public void borrowBook(String bookname) {
for (int i = 0; i < bookcollection.length; i++) {
if (bookcollection[i].getTitle().equals(bookname)&&(!(bookcollection[i].isBorrowed())))
{
bookcollection[i].borrowed();
break;
}
}
}
public void returnBook(String bookname) {
for (int i = 0; i < bookcollection.length; i++) {
if (bookcollection[i].getTitle().equals(bookname)) {
bookcollection[i].returned();
break;
}
}
}
public void printAvailableBooks() {
for (int i = 0; i < bookcollection.length; i++) {
if (!(bookcollection[i].isBorrowed())) {
System.out.println(bookcollection[i].getTitle());
}
}
}
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"));
// Print opening hours and the addresses
System.out.println("Library hours:");
printOpeningHours();
System.out.println();
System.out.println("Library addresses:");
firstLibrary.printAddress();
secondLibrary.printAddress();
System.out.println();
// Try to borrow The Lords of the Rings from both libraries
/* System.out.println("Borrowing The Lord of the Rings:");
firstLibrary.borrowBook("The Lord of the Rings");
firstLibrary.borrowBook("The Lord of the Rings");
secondLibrary.borrowBook("The Lord of the Rings");
System.out.println();*/
// Print the titles of all available books from both libraries
System.out.println("Books available in the first library:");
firstLibrary.printAvailableBooks();
System.out.println();
System.out.println("Books available in the second library:");
secondLibrary.printAvailableBooks();
System.out.println();
// Return The Lords of the Rings to the first library
System.out.println("Returning The Lord of the Rings:");
firstLibrary.returnBook("The Lord of the Rings");
System.out.println();
// Print the titles of available from the first library
System.out.println("Books available in the first library:");
firstLibrary.printAvailableBooks();
}
}
//Library uses objects of class book as members
public class Book {
String title;
boolean borrowed;
// Creates a new Book
public Book(String bookTitle) {
title = bookTitle;
borrowed = false ;
}
// Marks the book as rented
public void borrowed() {
borrowed = true;
}
// Marks the book as not rented
public void returned() {
borrowed = false;
}
// Returns true if the book is rented, false otherwise
public boolean isBorrowed() {
return ((borrowed) ? true : false);
}
// Returns the title of the book
public String getTitle() {
return 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.borrowed();
System.out.println("Borrowed? (should be true): "
+ example.isBorrowed());
example.returned();
System.out.println("Borrowed? (should be false): "
+ example.isBorrowed());
}
}
2件のコメント:NPEはどこで手に入りますか?以前の質問に対する回答の一部を受け入れてください。 – aioobe
あなたのスタックを見ることができ、どの行が例外をスローします。 –
私は駐車場の類推が好きです。駐車場のようなオブジェクトの配列を考えてみましょう。あなたは車の1つを運転しようとする前に車(物体)でそれを記入しなければなりません(物体の1つを使用してください)。そして、私はあなたの質問を取りに戻っていくつかの答えを受け入れるべきであるという上記のコメントもまた二番目です。これは他の人が将来あなたを助けることを奨励します。 –