Java 从类调用方法时出现NullPointerExceptionError

Java 从类调用方法时出现NullPointerExceptionError,java,class,nullpointerexception,Java,Class,Nullpointerexception,从主方法调用Book类中的dlete方法会产生NullPointerException。在主类中运行delete方法时工作正常 线程“main”java.lang.NullPointerException中出现异常 at algorithms/algorithms.Main.Main(Main.java:20) 我错过了什么 主要内容: Book类方法(省略属性、getter和setter): public Book[]removeBook(Book[]books,int findISBN){

从主方法调用Book类中的dlete方法会产生NullPointerException。在主类中运行delete方法时工作正常

线程“main”java.lang.NullPointerException中出现异常 at algorithms/algorithms.Main.Main(Main.java:20)

我错过了什么

主要内容:

Book类方法(省略属性、getter和setter):

public Book[]removeBook(Book[]books,int findISBN){
Book[]newArray=新书[books.length-1];
int j=0;
for(int i=0;i
您已将
书籍
声明为静态,但尚未对其进行初始化

private static Book book;
当你这么做的时候

bookArray = book.removeBook(bookArray, 456);
book
null

看来你要么

  • 新书()分配给您的静态
    书籍
  • 您可以在
    Book
    类中使方法
    static
    ,并在
    main
    方法中调用
    Book.removeBook(…)

  • 您仅使用
    私有静态Book声明了对
    Book
    的引用。在对其调用任何方法之前,需要对其进行实例化。包括
    book=新书()内部
    main
    方法

    在同一个资源类中包含一个资源和要对该资源执行的操作(在您的案例中,
    Book
    就是资源),这是一个糟糕的设计,这也是毫无价值的


    最好创建另一个类,如
    BookOperations
    ,并将所有逻辑写入其中,使
    Book
    资源保持整洁和简单。

    Book未初始化。初始化它或将方法设为静态。主题外,但如果给定ISBN与arrayremoveBook中的任何书籍不匹配,则您的
    removeBook
    方法将引发异常。removeBook应该是直接在book上调用的静态方法
    private static Book book;
    
    bookArray = book.removeBook(bookArray, 456);