java 二维数组定义报空指针

/***杨辉三角:由数字排列,可以把它看做一个数字表,其基本特性是两侧数值均为1,其他位置的数值是其正上方的数字与左上角数值之和,请输入10行以内的三角图*/int[][... /**
* 杨辉三角:
由数字排列,可以把它看做一个数字表,其基本特性是两侧数值均为1,
其他位置的数值是其正上方的数字与左上角数值之和,请输入10行以内的三角图

*/

int[][] array = new int[10][10];
for (int i = 0; i < 10; i++) {
for (int j = 0; j <= i; j++) {
if((j == 0)||(i == j)){
array[i][j] = 1;
System.out.print(array[i][j]+" ");
}else{
array[i][j] = array[i-1][j] +array[i-1][j-1];
System.out.print(array[i][j]+" ");
}
}
System.out.println();

//以上程序是正常的。
//只是刚开始报空指针异常。
//就是 int[][] array = new int[10][]; 列数没给值,为什么导致后面for里的代码会报空指针?
//请大牛具体解释下!!!谢谢
展开
 我来答
育知同创教育
2016-09-16 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
java采用“数组的数组”定义多维数组,也就是说a[0]是放在栈内存中的一个引用,你new的时候只new了从a[0]到a[3]3个引用,并没有指明它们具体指向哪,系统就给它们赋了默认的空值。
你根本没有为其分配堆空间何来a[0][1]?当然提示错误了。
改成:
int[][] a=new int[4][5];
System.out.println(a[0]);
System.out.println(a[0][1]);试试
说明一下:上面的二维数组a[4][5]是这样的:有4个一维数组a[0]到a[3]它们分别指向4个长度为5的一维数组
----------------------------------------------------------------------
a[0]是个引用,这个引用指向一个数组,a[0][1]是个元素,这个元素在数组
a[0]中,就好比你定义了个int[] b=new int[3],其中b[1]属于数组b一样
我爱吃柠檬曲奇
2016-09-16 · TA获得超过270个赞
知道小有建树答主
回答量:215
采纳率:75%
帮助的人:91.7万
展开全部
没给列数就是一堆空的数组, 没任何意义..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式