Java数组越界异常求助:列表元素乘索引赋值问题排查
解决数组越界异常的问题
嘿,我一眼就揪出问题所在啦!咱们先拆解这个ArrayIndexOutOfBoundsException的根源:
你第一个for循环结束后,变量L2的值已经变成了20——因为循环条件是L2 < List2.length,当L2递增到20时,不满足条件就退出循环了。而List2的长度是20,它的合法索引范围是0到19,这时候你在第二个循环里调用List2[L2],就相当于访问List2[20],这肯定会触发越界异常呀!
再看你的需求:把List2中的每个元素乘以其索引值,存入List1。其实两个数组长度完全相同,完全可以用同一个索引来遍历它们,这样既贴合需求,又不会出错。
修正后的代码
public static void main(String[] args) { int List1 []= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; int List2 []= {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1}; // 填充List2的随机值 for(int L2=0 ;L2<List2.length;L2++) { List2[L2]= (int) (100*Math.random()); System.out.print(" "+List2[L2]); } System.out.println(""); // 遍历并计算赋值给List1 for(int L1 = 0;L1<List1.length;L1++) { // 用当前索引L1访问List2的对应元素,乘以索引L1 List1[L1]= List2[L1]*L1; System.out.print(" "+List1[L1]); } }
关键修改点
- 把循环变量
L1和L2都声明在循环内部(更规范,避免变量污染) - 第二个循环里直接用
L1作为索引访问List2,因为两个数组长度一致,索引一一对应,完美匹配你的需求:每个List2元素乘以自己的索引,存入List1的对应位置
这样修改后,就不会再出现数组越界的问题啦!
内容的提问来源于stack exchange,提问作者Supersaingamer88
相关产品推荐
相关产品推荐

