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里的代码会报空指针?
//请大牛具体解释下!!!谢谢 展开
* 杨辉三角:
由数字排列,可以把它看做一个数字表,其基本特性是两侧数值均为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里的代码会报空指针?
//请大牛具体解释下!!!谢谢 展开
2个回答
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一样
你根本没有为其分配堆空间何来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一样
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询