Java二维数组填充空白触发ArrayIndexOutOfBoundsException问题咨询
排查Java数组越界错误的原因及修正方案
嘿,我来帮你搞定这个ArrayOutOfBoundsException的问题~咱们一步步拆解:
核心错误:数组索引越界
Java里的数组是从0开始索引的,你定义的names数组行长度是maxRows=10,也就是说行的有效索引范围是0到9(一共10行)。但你的外层while循环写的是:
while(y <= maxRows)
当y增长到10的时候,你尝试访问names[10][x],这明显超出了数组的行边界,直接触发数组越界异常。
额外的变量名错误
除了越界问题,你的代码还有两个变量名不匹配的问题,会导致编译失败:
- 内层循环里用了
index,但你定义的内层循环变量是x,应该把index换成x; - 外层循环最后用了
counter++,但控制循环的变量是y,应该改成y++,不然会陷入无限循环。
修正后的代码
public class Untitled { public static void main(String[] args) { int maxRows = 10 ; String names[][] = new String[maxRows][2] ; int y = 0 ; // 把<=改成<,确保y最大到9 while(y < maxRows) { int x = 0 ; // 把index换成x,变量名统一 while (x < 2) { names[y][x] = " " ; x++ ; } // 把counter换成y,控制外层循环递增 y++ ; } } }
小提示
以后处理数组循环的时候,一定要记住数组长度是元素的总数,最大索引是长度减1,循环条件用< 数组长度就不会踩越界的坑啦~
内容的提问来源于stack exchange,提问作者user13652256
相关产品推荐
相关产品推荐

