Java填充二维数组触发ArrayIndexOutOfBoundsException异常如何解决
错误原因
- 外层行循环初始值设为0,首次执行循环时
r=0,运行arr[r-1][c]时会尝试读取下标为-1的行,Java数组下标从0开始,负数下标直接触发ArrayIndexOutOfBoundsException,和你收到的报错信息完全匹配。 - 现有逻辑会覆盖你提前硬编码的第0行基准值,不符合你"用第0行作为基准填充其余行"的预期。
修正代码
populate2D方法修正
public static void populate2D (int[][] arr) { // 硬编码第0行基准值 arr[0][0] = 0; arr[0][1] = 10; arr[0][2] = 100; arr[0][3] = 500; arr[0][4] = 1000; arr[0][5] = 5000; // 行循环从第1行开始,跳过已完成赋值的第0行 for (int r = 1; r < arr.length; r++) { arr[r][0] = r; for (int c = 1; c < arr[r].length; c++) { int priorNum = arr[r-1][c]; arr[r][c] = priorNum * 2; } } }
print2DArray方法修正
你提供的打印方法末尾多了1个多余的右大括号,删除后即可正常运行:
public static void print2DArray(int[][] arr) { for (int r = 0; r < arr.length; r++) { for (int c = 0; c < arr[r].length; c++) { System.out.print(arr[r][c] + "\t"); } System.out.println(); } }
内容的提问来源于stack exchange,提问作者noelle
相关产品推荐
相关产品推荐

