Java运行代码出现Index out of bound数组索引越界异常原因咨询
异常原因分析
- 二维数组初始化逻辑错误
本次运行输入的q值为1,第一次进入循环时变量i的值为0,执行sum = new int[i][n];相当于创建了一个行数为0的二维数组,该数组第一维没有任何有效元素,不存在合法下标。 - 数组下标访问超出合法范围
Java数组下标从0开始计数,长度为m的数组合法下标范围为0 ~ m-1。你创建的二维数组第一维长度为i,而你后续直接访问sum[i][0],下标值刚好等于数组长度,必然超出合法范围。
本次抛出的异常就是第一次循环时,访问第一维长度为0的数组的下标0,触发了下标越界校验,对应报错信息Index 0 out of bounds for length 0。
修正方案
如果需要存储q次循环的计算结果,调整代码逻辑如下:
Scanner sc = new Scanner(System.in); int a=0,b=0,n=0; int q = sc.nextInt(); // 先初始化二维数组第一维,长度为查询次数q int[][] sum = new int[q][]; for(int i=0;i<q;i++){ a = sc.nextInt(); b = sc.nextInt(); n = sc.nextInt(); // 为当前第i行单独初始化长度为n的一维数组 sum[i] = new int[n]; sum[i][0] = a + (int)Math.pow(2,0) * b; }
内容的提问来源于stack exchange,提问作者Green Goblan
相关产品推荐
相关产品推荐

