java 矩阵的对角线

Diagonals with java Matrices

目前正在尝试打印输出为:

的矩阵
0 0 0 0 4
0 0 0 3 0
0 0 2 0 0
0 1 0 0 0
0 0 0 0 0

这是我目前的代码:

for(int row=0; row < matrix.length; row++)
        for(int col = 0; col < matrix[row].length; col++)
            if(row+col == matrix[row].length)

显然不完整。我什至不确定代码背后的逻辑是否正确。

假设总是平方 matrix.This 应该构造你的矩阵。

for(int row=0; row < matrix.length; row++)
{
    //System.out.println("");
    for(int col = 0; col < matrix.length; col++)
    {
        //eg [0][4] = 4 on valid condition [5-0-1] == 4 
        if(matrix.length-row-1 == col)
        {
             matrix[row][col] = col;
        }
        //System.out.print(matrix[row][col]);
     }
}


要在同一步骤中打印,只需删除打印注释

这是应该有效的代码(假设矩阵总是正方形):

for(int row=0; row < matrix.length; row++){
        for(int col = 0; col < matrix[row].length; col++){
            if(row + col == matrix.length - 1){
                matrix[row][col] = col;
                System.out.print(col+ " "); // Print value
            } else {
                matrix[row][col] = 0; // Set value
                System.out.print("0 ");
            }
        }
        System.out.println("");
    }

我们在条件中减去 1,因为 length-1 给了我们最后一个索引。 (提醒索引从 0 开始到长度 -1)

请注意,int 数组中的默认值为 0,因为 int 变量的默认值为 0。因此,您只需更改所需对角线上的值,其余值保持原样即可。

按如下操作:

public class Main {
    public static void main(String[] args) {
        final int SIZE = 5;
        int[][] matrix = new int[SIZE][SIZE];

        // Initialise the matrix
        for (int row = 0; row < matrix.length; row++) {
            for (int col = 0; col < matrix[row].length; col++) {
                if (row + col == matrix.length - 1) {
                    matrix[row][col] = col;
                }
            }
        }

        // Print the matrix
        for (int row[] : matrix) {
            for (int col : row) {
                System.out.print(col + " ");
            }
            System.out.println();
        }
    }
}

输出:

0 0 0 0 4 
0 0 0 3 0 
0 0 2 0 0 
0 1 0 0 0 
0 0 0 0 0 

我已经使用增强的 for 循环来打印矩阵。如果你愿意,你可以这样写:

// Print the matrix
for (int row = 0; row < matrix.length; row++) {
    for (int col = 0; col < matrix[row].length; col++) {
        System.out.print(matrix[row][col] + " ");
    }
    System.out.println();
}