为什么出现Exception in thread "main" java.lang.NullPointerException
packagecom.library;importjava.util.*;publicclassBookItem{privateArrayList<Book>books;...
package com.library;
import java.util.*;
public class BookItem {
private ArrayList<Book> books;
public BookItem()
{
ArrayList<Book> books=new ArrayList<Book>();
}
public void addBook(Book book)
{
books.add(book); ///java.lang.NullPointerException
}
public Iterator<Book> iterator()
{
return books.iterator();
}
public String toString()
{
for(Book p:books)
{
return p.getId()+":"+p.getName();
}
return null;
}
public static void main(String[] args)
{
BookItem books=new BookItem();
Book book=new Book();
book.setId(1);
book.setName("English");
books.addBook(book); ///java.lang.NullPointerException
books.toString();
} 展开
import java.util.*;
public class BookItem {
private ArrayList<Book> books;
public BookItem()
{
ArrayList<Book> books=new ArrayList<Book>();
}
public void addBook(Book book)
{
books.add(book); ///java.lang.NullPointerException
}
public Iterator<Book> iterator()
{
return books.iterator();
}
public String toString()
{
for(Book p:books)
{
return p.getId()+":"+p.getName();
}
return null;
}
public static void main(String[] args)
{
BookItem books=new BookItem();
Book book=new Book();
book.setId(1);
book.setName("English");
books.addBook(book); ///java.lang.NullPointerException
books.toString();
} 展开
3个回答
展开全部
错误类型是空指针。
private ArrayList<Book> books;
这一句,books没有new,所以从头到尾一直是null,你用null调用对象方法,肯定是空指针。
private ArrayList<Book> books;
这一句,books没有new,所以从头到尾一直是null,你用null调用对象方法,肯定是空指针。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
构造函数中去掉 ArrayList<Book> 的声明。如果此处声明了,则认为books为局部变量,而不是你在类中声明的属性books。
构造函数修改后如下:
public BookItem()
{
books=new ArrayList<Book>();
}
构造函数修改后如下:
public BookItem()
{
books=new ArrayList<Book>();
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
改成这样试试
private ArrayList<Book> books;
public BookItem()
{
books=new ArrayList<Book>();
}
这个地方也有问题。。。。
public String toString()
{
for(Book p:books)
{
return p.getId()+":"+p.getName();
}
return null;
}
---------------------------------
这样是返回不了所有book的,所有连起来再return吧。
private ArrayList<Book> books;
public BookItem()
{
books=new ArrayList<Book>();
}
这个地方也有问题。。。。
public String toString()
{
for(Book p:books)
{
return p.getId()+":"+p.getName();
}
return null;
}
---------------------------------
这样是返回不了所有book的,所有连起来再return吧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询