Java 矩阵中匹配单元格的越界错误
此方法用于查找匹配两个对齐单元格的任何单元格,并将其存储在临时矩阵中。然而,每当我运行程序时,我都会得到一个越界错误。矩阵是3x3。如何使其在tempMatrix中存储任意3个匹配的相邻单元格 公共空匹配矩阵(){Java 矩阵中匹配单元格的越界错误,java,matrix,Java,Matrix,此方法用于查找匹配两个对齐单元格的任何单元格,并将其存储在临时矩阵中。然而,每当我运行程序时,我都会得到一个越界错误。矩阵是3x3。如何使其在tempMatrix中存储任意3个匹配的相邻单元格 公共空匹配矩阵(){ int[]tempMatrix=newint[rowsN][columnsM]; 对于(int i=0;i
int[]tempMatrix=newint[rowsN][columnsM];
对于(int i=0;i
在最后一次执行内部循环期间,上述代码将访问2D数组的最后一个索引外部
matrixArr[i+1][j]
在最后一次执行外部循环期间,上述代码将访问2D数组的最后一个索引之外的内容
此外,该代码假定2D数组始终是方形矩阵j
但将tempMatrix初始化为tempMatrix=new int[rowsN][columnsM]代码>。这也可能是一个例外
如何修复越界异常
添加边界条件的显式检查
每当访问i+2
时,确保当前索引至少比上一个索引小2
if(i
你的问题是什么?抱歉,我把它编辑到了OP-its“如何让它在tempMatrix中存储任何3个匹配的相邻单元格”嗯,我现在知道为什么了,但是我怎么才能告诉它存储匹配项呢?一个可能的解决方案是添加如果检查以检查边界条件我不确定我是否理解,你能给我举个例子吗?@jacobbarrato,我添加了一个示例代码ahhh,这就是你的意思。我懂了!比你强!
int[][] tempMatrix = new int[rowsN][columnsM];
for(int i = 0; i < matrixArr.length; i++){
for(int j = 0; j < matrixArr.length; j++){
if((matrixArr[i][j] == matrixArr[i + 1][j] && matrixArr[i][j] == matrixArr[i + 2][j]) || (matrixArr[i][j] == matrixArr[i][j + 1] && matrixArr[i][j] == matrixArr[i][j + 2])){
tempMatrix[i][j] = matrixArr[i][j];
}
}
}
for(int i = 0; i < matrixArr.length; i++){
for(int j = 0; j < matrixArr.length; j++){
if(matrixArr[i][j] == tempMatrix[i][j]) System.out.println("[ ] ");
else{
System.out.print("[" + matrixArr[i][j] + "] ");
}
}
System.out.println();
}
System.out.println();
}
matrixArr[i][j + 1]