Java多维数组越界报错:向三维int数组填充二维String数组时索引越界
异常原因
- 控制
sudoku第三维索引的变量c仅在所有循环开始前初始化了一次为0,没有在每次外层循环(控制第二维索引b的循环)启动时重置:
第一次内层循环执行时,j从9到17共执行9次,c会从0自增到9;进入下一轮外层循环时,c仍保留9的数值,此时访问sudoku[1][b][9]超出了第三维的合法索引范围(长度为9的数组合法索引是0~8),直接触发数组越界异常。 - 额外提醒:当前外层循环条件为
i < 6,最多只能填充6行数据,如果需要完整填充9行的数独结构,需要调整该循环条件。
修复方案
每次外层循环启动时重置c为0,按需调整外层循环次数即可,修正后的代码如下:
//sudoku1 int b = 0; // 要完整填充9行就保留i < 9,若只需要填充6行可改回i < 6 for (int i = 0; i < 9; i++) { int c = 0; // 每填充新的一行前重置列索引为0 for (int j = 9; j < 18; j++) { sudoku[1][b][c] = Integer.valueOf(tmp[i][j]); c++; } b++; }
内容的提问来源于stack exchange,提问作者Ersin Yılmaz Aslan
相关产品推荐
相关产品推荐

