为了账号安全,请及时绑定邮箱和手机立即绑定

第一个for 循环写names[i].length,为什么会报数组越界的异常

for (int i = 0; i < names[i].length    ; i++)  

for (int j = 0; j < names[i].length; j++) 

                


正在回答

3 回答

names[i].length表示的是每行的长度(也就是把二维数组拆分为一维数组,每个一维数组的长度),你写的代码之所以越界,是因为[行数<列数],所以可能会遇到这种情况,如果[行数=列数],就不会越界,不信你试试。

所以建议把第一个for循环内的names[i].length改成names.length。

2 回复 有任何疑惑可以回复我~
#1

_Timo_ 提问者

谢谢,不过我还有疑问。 names[i].length和names.length的区别是什么呢? 能不能第一个写names[i].length,第二个写names.length呢?
2018-08-26 回复 有任何疑惑可以回复我~
#2

闻问切 回复 _Timo_ 提问者

二维数组可以看做是多个一维数组组成,假设有个二维数组array[i][j],i就是行数,j就是列数,array.length就是有多少行,也就是说java首先判断整个二维数组的行数,所以不必加[i],而判断列数,就得把每一行拿出来,所以加了行标[i],要不然不知道是哪一行需要计算列数(二维数组每一行中的列数可以不一样)。
2018-08-26 回复 有任何疑惑可以回复我~

sorry,把数组打成了列表了。。上面的回答把所有列表替换成数组即可。

0 回复 有任何疑惑可以回复我~

你可以把names看成是有很多个子数组的大数组,names.length就是指这个列表里子列表的数量(长度),在这些子列表中,names[i]就是第i个子列表。所以names[i].length就是第i个子列表的长度。

3 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

第一个for 循环写names[i].length,为什么会报数组越界的异常

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信