Java 矩阵行反转中的索引越界 公共静态int[]reverseRows(int[]]matrix){ int i,j,k=(矩阵长度-1),l=(矩阵[0].长度-1); int[][]rr=新的int[matrix.length][matrix[0.length]; 对于(i=0;i

Java 矩阵行反转中的索引越界 公共静态int[]reverseRows(int[]]matrix){ int i,j,k=(矩阵长度-1),l=(矩阵[0].长度-1); int[][]rr=新的int[matrix.length][matrix[0.length]; 对于(i=0;i,java,matrix,Java,Matrix,您的代码可以在一次迭代中正常工作 public static int [][] reverseRows (int [][] matrix ) { int i, j, k = (matrix.length - 1), l = (matrix[0].length - 1); int [][] rr = new int[matrix.length][matrix[0].length]; for(i = 0; i < matrix.length; i++) {

您的代码可以在一次迭代中正常工作

public static int [][] reverseRows (int [][] matrix ) {
    int i, j, k = (matrix.length - 1), l = (matrix[0].length - 1);
    int [][] rr = new int[matrix.length][matrix[0].length];

    for(i = 0; i < matrix.length; i++) {
        for(j = 0; j < matrix[i].length; j++)
            rr[k][l--] = matrix[i][j]; // <--- This line
        k--;
    }
    printMatrix(rr);
    return matrix;
}
for(i = 0; i < matrix.length; i++) {
        for(j = 0; j < matrix[i].length; j++)
            rr[k][l--] = matrix[i][j]; // <--- This line
        k--;
    }

希望这有帮助。

我认为您需要在每个j循环之后重新分配'l'的值,就像您的代码那样,变量'l'将递减I*j倍。 尝试以下方法:

for(i = 0; i < matrix.length; i++) {
        l = matrix[0].length - 1; // <--- This line
        for(j = 0; j < matrix[i].length; j++)
            rr[k][l--] = matrix[i][j]; 
        k--;
    }
公共静态int[]reverseRows(int[]]matrix){
int i,j,k=(矩阵长度-1),l=(矩阵[0].长度-1);
int[][]rr=新的int[matrix.length][matrix[0.length];
对于(i=0;irr[k][l--]=matrix[i][j];//谢谢您所做的编辑:)当然,祝您好运获得帮助。对。因为在下一个循环开始时它将是0。谢谢您的帮助:)很高兴它帮助了您:)
public static int [][] reverseRows (int [][] matrix ) {
    int i, j, k = (matrix.length - 1), l = (matrix[0].length - 1);
    int [][] rr = new int[matrix.length][matrix[0].length];

    for(i = 0; i < matrix.length; i++) {
        l = (matrix[0].length - 1);
        for(j = 0; j < matrix[i].length; j++)
            rr[k][l--] = matrix[i][j]; // <--- This line
        k--;
    }
    printMatrix(rr);
    return matrix;
}