java - ArrayList 列出 null 而不是对象的实例

标签 java

public class Library{
    private ArrayList<Book> books = new ArrayList<Book>();

    public void addBook()
    {
        Scanner sc = new Scanner(System.in);

        System.out.println("Enter title of the book: ");
        String title = sc.nextLine();
        System.out.println("Enter the author: ");
        String author = sc.nextLine();

        String bookID = bookID();

        Book b = new Book(author,title,bookID,true);
        books.add(b);

        System.out.println( title + " by "+ author +" added to library.");
        System.out.println("Book ID: " + bookID);

    }

    public void listBooks()
    {
        for (Book temp : books)
        {
            if (temp.loanStatus() == true) System.out.print("*");

            System.out.println(temp.getTitle() + " by " + temp.getAuthor()+
                "ID: " + temp.getID());
        }
    }
} 

这是我的图书类(class):

public class Book {

    private String author;
    private String title;
    private String ID;
    private boolean loanRecord = true;

    public Book(String au, String titl, String id, boolean loan)
    {
        au = author;
        titl = title;
        loan = loanRecord;  
        id = ID;
    }

    public String getTitle()
    {
        return title;
    }

    public String getAuthor()
    {
        return author;
    }

    public String getID()
    {
        return ID;
    }

    public boolean loanStatus()
    {
        return loanRecord;
    }

    public void checkoutBook()
    {
        loanRecord = false;
    }

    public void returnBook()
    {
        loanRecord = true;
    }
}

出于某种原因,当我调用我的listBooks()时方法列出添加到 books 的所有书籍ArrayList,每个 Book我添加的对象显示为 null而不是我期望的所需字符串实例。

最佳答案

您在构造函数中交换了分配。

应该是:

public Book(String au, String titl, String id, boolean loan){   
  author = au;    
  title = titl;   
  loanRecord = loan;  
  ID = id;    
}

简单说一下,您可以重写 Book 类中的 toString 方法,然后简单地执行以下操作:

for (Book temp : books){
     if (temp.loanStatus()) 
          System.out.print("*");
     System.out.println(temp);
}

关于java - ArrayList 列出 null 而不是对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21712636/

相关文章:

java - 具有多个 IP SAN 扩展的证书

Java jList NullPointerException 错误

java - 用于生成唯一 ID 的哈希算法?

javascript - 使用 javascript 接口(interface)重新加载 Android webview

python - 如何在 SAP Logon 中自动执行重复任务

java - Spring 注解扫描优化

Java瘦型Web服务器

java - 使用带有 JSch 的 "exec" channel 运行命令不返回任何输出

java - 使用前缀树在 O(1) 中查找单个最近邻居?

java - 如何使用 java lambda 获取子元素以放入 Map<Long, List<Long>>?