java对象数组初始化报错 java.lang.NullPointerException

一个网络留言板的javabean,会报java.lang.NullPointerException错误,应该是对象数组初始化的问题,感觉没什么问题不知道怎么改。publi... 一个网络留言板的javabean,会报java.lang.NullPointerException错误,应该是对象数组初始化的问题,感觉没什么问题不知道怎么改。
public class MessageBean { //单条留言
public String writer;
public String title;
public String content;
public String time;
public int nownum = 0;
public MessageList MsgStorage; //留言表

public MessageBean(){
this.writer="无";
this.title="无";
this.content="无";
this.time="无";
}
public String getMsglist(int num) {
return MsgStorage.getMsg(num);
}
public void setMsglist(){
MsgStorage.setMsg(this.writer,this.title,this.content,this.time,this.nownum);
this.nownum++;
}
....省略set get属性函数...
}
class MessageList{
public MessageBean[] MsgList=new MessageBean[10];
public MessageList(){
for(int i=0;i<9;i++)
{
this.MsgList[i]=new MessageBean();
}
}
public void setMsg(String wt,String tt,String ct,String ti,int num){
this.MsgList[num].writer=wt;
this.MsgList[num].content=ct;
this.MsgList[num].title=tt;
this.MsgList[num].time=ti;
}
public String getMsg(int num) {
return ("内容:"+ this.MsgList[num].getContent()+ "———留言人"+ this.MsgList[num].getWriter());
}
}
展开
 我来答
第一碗羊杂割
2015-07-10 · TA获得超过6145个赞
知道大有可为答主
回答量:1107
采纳率:80%
帮助的人:559万
展开全部

题主你并没有实例化变量 MsgStorage,只是声明了一下它,这样会导致程序并没有给它分配内存空间,所以会出现 NullPointerException。应将第 7 行改为

public MessageList MsgStorage = new MessageList();

或在你的 MessageBean 类的 Constructor 中添加一行

this.MsgStorage = new MessageList();

但是这样会导致你的代码进入死循环,因为你每初始化一个 MessageBean 时就会初始化一个  MessageList,但初始化 MessageList 时又会初始化 10 个 MessageBean,初始化这 10 个 MessageBean 时又要求初始化 MessageList...,这样是永远执行不完的。 所以建议修改一下你的代码逻辑。

更多追问追答
追问
MessageList是一个类对象啊,在底下有定义,我是在它的构造里进行的实例化变量,这样应该没问题啊。

public MessageList(){
for(int i=0;i<10;i++)
{
this.MsgList[i]=new MessageBean();
}
}
追答

超出字数限制了,所以把截图给你发一下:


白菜一颗
2015-07-10 · TA获得超过8916个赞
知道大有可为答主
回答量:3260
采纳率:69%
帮助的人:3726万
展开全部
具体调用在哪?哪一行报的错?最好全发一下不然不好判断,但是现在看到的是你那个 for 循环的时候判断条件应该是小于10而不是小于9
追问
编译能通过,调用MessageBean.setMsglist()或者getMsglist()都会报错。全发太多了,有字数限制。for循环改了没用……
追答
MessageBean 里面的 MsgStorage 根本就没有初始化过,不知道你具体怎么操作的,最好能把你的初始化和调用的代码发上来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式