从类调用方法时出现java NullPointerExceptionError
从主方法调用Book类中的dlete方法会产生NullPointerException。在主类中运行delete方法时效果良好
线程“main”java中出现异常。lang.NullPointerException 在算法方面。主要的main(main.java:20)
我错过了什么
主要内容:
private static Book book;
public static void main(String[] args) {
Book[] bookArray = {new Book(123, "Book1"),
new Book(321, "Book2"),
new Book(456, "Book3"),
new Book(654, "Book4"),
new Book(789, "Book5")};
System.out.println(bookArray.length);
bookArray = book.removeBook(bookArray, 456);
System.out.println(bookArray.length);
}
Book类方法(省略属性、getter和setter):
public Book[] removeBook(Book[] books, int findISBN) {
Book[] newArray = new Book[books.length - 1];
int j = 0;
for (int i = 0; i < books.length; i++) {
if(books[i].getISBN() != findISBN) {
newArray[j] = books[i];
j++;
}
}
return newArray;
}
# 1 楼答案
您只使用
private static Book book;
声明了对Book
的引用。在对其调用任何方法之前,需要对其进行实例化。在main
方法中包含book = new Book();
同样值得一提的是,在同一个资源类中包含一个资源和要在该资源上执行的操作(在您的例子中
Book
是资源)是一个糟糕的设计最好创建另一个类,比如
BookOperations
,并将所有逻辑都写在那里,保持Book
资源的整洁和简单