Java二维数组清零时触发数组越界错误的问题求助
问题排查与修复方案
嘿,我一眼就瞅出问题所在了!你的chipClear方法里,内层循环的判断条件写错了,这直接导致了数组越界错误。
错误根源拆解
你看,外层循环是遍历行(变量i),条件i < squareNum是没问题的;但内层循环遍历列(变量j)时,你误把判断j的条件写成了i < squareNum - 1——这就意味着j会毫无限制地一直自增,直到超出数组的最大索引(你的数组是100x100,索引最大到99),自然就触发数组越界异常了。
修正后的代码
如果你的需求是清零前squareNum行、squareNum列的元素,把内层循环的条件改成j < squareNum就行(另外没必要减1,除非你确实只想清零到第squareNum-1列):
public void chipClear() { for( int i = 0; i < squareNum; i++) { for(int j = 0; j < squareNum; j++) { // 把i改成j,去掉多余的-1 chipHere[i][j] = 0; } } }
要是后续你想动态清零整个100x100数组(不依赖squareNum变量),可以写得更通用,避免硬编码数值:
public void chipClear() { for( int i = 0; i < chipHere.length; i++) { for(int j = 0; j < chipHere[i].length; j++) { chipHere[i][j] = 0; } } }
额外小技巧(Java 8+)
如果你的项目用的是Java 8及以上版本,还可以用流API简化代码,一行搞定清零:
import java.util.Arrays; // 别忘了导入这个包 public void chipClear() { Arrays.stream(chipHere).forEach(row -> Arrays.fill(row, 0)); }
内容的提问来源于stack exchange,提问作者Cameron McLeod
相关产品推荐
相关产品推荐

