java二维数组赋值报错:java.lang.NullPointerException

int[][]a=newint[3][];for(inti=0;i<3;i++){for(intj=0;j<4;j++){a[i][j]=8;}}怎么会出错呢出错的地方为... int[][] a=new int[3][];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
a[i][j]=8;
}
}
怎么会出错呢
出错的地方为赋值语句a[i][j]=8;处
展开
 我来答
pieryon
推荐于2018-06-17 · 知道合伙人数码行家
pieryon
知道合伙人数码行家
采纳数:14410 获赞数:166869
获取软件设计师高级职称 万达金融最佳创新奖

向TA提问 私信TA
展开全部
报错原因是二维数组的初始化不对。当循环的时候找不到对应的赋值目标,所以报空指针。

1,创建二维数组语句:int[][] array = new int[3][3];

2,直接创建二维数组并赋值语句:int[][] array ={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}} ;

二维数组,也可以理解为用一维数组保存的元素为一维数组。对于三维数组,等等,都可以这样划分。不过我们在编程中使用三维以上的数组比较少。因为那样使用起来非常不方便。下面我们来学习二维数组的声明。其声明同一位数组一样,可以先声明再分配内存,也可以声明时分配内存
第一种,先声明再分配内存的方式
数组声明: 数据类型 数组名[][];
内存分配: 数组名 = new 数据类型[行的个数][列的个数];
举例: 假如我们需要统计一个象棋上放的是黑棋还是白棋。这时,我们可以建立一个坐标,即以象棋盘的两边建立坐标轴。这时,我们可以这样定义这个二维数组:
声明数组: int Chess[][];
内存分配 Chess= new int[64][64];
第二种,即声明时即分配内存的方式。
使用格式是: 数据类型 数组名[][] =new 数据类型 [行的个数][列的个数];
使用上个步骤中的例子,我们可以将数组的声明和分配内存写成以下方式:
声明即分配内存:int Chess[][] = new int[64][64];
二维数组的赋值,同一维数组类似。只是在{}中的每个元素又是每个一维数组。如下格式:
数据类型 数据名[][]={
{值1,值2,值3,值4 }, //第一行数据
{值5,值6,值7,值8}, //第二行数据
...,
}
二维数组中,可以有列数不相等的数组。即每一行的列数不同时。我们需要对每一行进行赋值。
对于这两种二维数组。我们分别来进行分别举例进行赋值。第一种是:列数相同的数组
其赋值格式如下:
String ClassRoom[][]={
{"小王","小李","小张"},
{"小红","小明","小花"},
}
即第一行的人数和第二行的人数相同。
第二种:即列数不相等的数组的赋值格式如下:
String ClassRoom[][]={
{"小王","小李","小张"},
{"小红","小明","小花"},
{"小雨","小风","小平","小雷"},
{"小单"}
}
看上述例子。对于不同的行,其相应的列数是不同的。
千锋教育
2015-12-03 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
你只是定义了一个int[3][]的二维数组
但是没有分配空间
正确如下
int[][] a=new int[3][];
for (int i = 0; i < 3; i++) {
a[i] = new a[4];
for (int j = 0; j < 4; j++) {
a[i][j]=8;
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
java和小熊
2015-12-03 · 超过69用户采纳过TA的回答
知道小有建树答主
回答量:103
采纳率:100%
帮助的人:88.8万
展开全部
int[][]是二维数组,new int[3][]表示一维是3,二维你没有声明,所以无法初始化,a[i][j]
元素是null,所以会报错。将new int[3][]改为new int[3][4]或者其他吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
在西浦村上钢琴课的天王星
2018-06-01 · 超过15用户采纳过TA的回答
知道答主
回答量:65
采纳率:90%
帮助的人:13.1万
展开全部
指定int[][] a = new int[3][4];
不指定,无法分配内存!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式