You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 19:12:54