请问这个java程序为什么运行不了

publicclassTheater{intseat[][];publicstaticvoidmain(String[]args){Theatera=newTheater... public class Theater
{
int seat[][];
public static void main(String[]args)
{
Theater a= new Theater(5,20);
System.out.println(a.seat[0][0]);//这里就是第7行
a.Buy(2,15);
a.Buy(2,15);
}
public Theater(int hang,int lie)//构造电影院座位
{
int seat[][]=new int[hang][lie];
for(int i=0;i<seat.length;i++)
for(int j=0;j<seat[i].length;j++)
seat[i][j]=0;
}
public void Buy(int hang,int lie)
{
if(check(hang,lie))
{
seat[hang-1][lie-1]=1;
System.out.println("位置购买成功");
}
else
System.out.println("购买失败");
}
public boolean check(int hang,int lie)
{
if((hang-1)>seat.length||(lie-1)>seat[0].length)
{
System.out.println("位置非法");
return false;
}
else if(seat[hang-1][lie-1]==1)
{
System.out.println("位置已被购买");
return false;
}
else if(seat[hang-1][lie-1]==0)
{
System.out.println("位置可被购买");
return true;
}
return false;
}
}

运行时提示Exception in thread "main" java.lang.NullPointerException
at Theater.main(Theater.java:7)
百度过感觉好像是因为a.seat其实根本不存在,但我不知道该怎么解决T T......
求大神帮助......万分感谢
展开
 我来答
无所不扔
2018-03-31 · 超过20用户采纳过TA的回答
知道答主
回答量:34
采纳率:100%
帮助的人:14.4万
展开全部
你的构造函数里面写错了,构造函数第一行应该改为:this.seat= new int…
因为你是在构造函数里直接创建了另外一个变量,并没有给这个类的属性seat初始化。所以第七行报空指针异常
追问
哦~万分感谢!!!初学者想了好久没想出来为啥😭,谢谢大神!
e世同人
2018-03-31 · TA获得超过830个赞
知道小有建树答主
回答量:229
采纳率:87%
帮助的人:90.7万
展开全部
你源码里的这个构造函数里:
public Theater(int hang,int lie)//构造电影院座位
{
int seat[][]=new int[hang][lie];
for(int i=0;i<seat.length;i++)
for(int j=0;j<seat[i].length;j++)
seat[i][j]=0;
}声明了局部变量int seat[][],屏蔽掉了类成员int seat[][],所以类成员seat还是未初始化状态!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式