arraylist中的NullPointerException

mkj*_*kjh 1 java arraylist nullpointerexception

我的学校工作有些问题,希望我能在这里得到一些帮助!显然,第17行存在nullpointerexception错误.

import java.util.*;
import java.text.*;
public class Librarian {
    private ArrayList<Book> bookList = new ArrayList<Book>();

    public Librarian() {
        bookList = new ArrayList<Book>();
    }
    public ArrayList<Book> findBooksWrittenBy(ArrayList<Book> bookList, String author) {
        ArrayList<Book> booksByAuthor = new ArrayList<Book>();
        for(int i = 0; i < bookList.size(); i++) {
            Book book = bookList.get(i);
            String author1 = book.getAuthor();
            if(author1.equalsIgnoreCase(author)) {
                booksByAuthor.add(book);
            }
            if(booksByAuthor.size() != 0) {
                booksByAuthor = booksByAuthor;
            }else {
                booksByAuthor = null;
            }
        }
        return booksByAuthor;
    }
Run Code Online (Sandbox Code Playgroud)

Ste*_*ven 8

将您的支票放在for循环之外的作者身上.然后,检查大小并立即返回,将对象分配给自身是多余的.

如下:

  public ArrayList<Book> findBooksWrittenBy(ArrayList<Book> bookList, String author) {
    ArrayList<Book> booksByAuthor = new ArrayList<Book>();
    for(int i = 0; i < bookList.size(); i++) {
        Book book = bookList.get(i);
        String author1 = book.getAuthor();
        if(author1.equalsIgnoreCase(author)) {
            booksByAuthor.add(book);
        }
    }
    if(booksByAuthor.size() > 0) {
        return booksByAuthor;
    }else {
       return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 唯一有意义的答案.1+ (3认同)