Java 矩阵中匹配单元格的越界错误

Java 矩阵中匹配单元格的越界错误,java,matrix,Java,Matrix,此方法用于查找匹配两个对齐单元格的任何单元格,并将其存储在临时矩阵中。然而,每当我运行程序时,我都会得到一个越界错误。矩阵是3x3。如何使其在tempMatrix中存储任意3个匹配的相邻单元格 公共空匹配矩阵(){ int[]tempMatrix=newint[rowsN][columnsM]; 对于(int i=0;i

此方法用于查找匹配两个对齐单元格的任何单元格,并将其存储在临时矩阵中。然而,每当我运行程序时,我都会得到一个越界错误。矩阵是3x3。如何使其在tempMatrix中存储任意3个匹配的相邻单元格

公共空匹配矩阵(){

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]