Диагонали с матрицами java - PullRequest
0 голосов
/ 09 апреля 2020

В настоящее время пытаюсь напечатать матрицу с выводом:

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)

Очевидно, не завершено. Я даже не уверен, что мои логики c за кодом верны.

Ответы [ 3 ]

0 голосов
/ 09 апреля 2020

Это код, который должен работать (при условии, что матрица всегда квадратная):

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 в условии, так как длина-1 дает нам последний индекс. (напоминание, что индексы начинаются с 0 и до go длина -1)

0 голосов
/ 10 апреля 2020

Обратите внимание, что значения по умолчанию в массивах 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 

Я использовал расширенный для l oop для печати матрицы. Вы можете написать это следующим образом, если вы будете sh:

// 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();
}

Не стесняйтесь комментировать в случае каких-либо сомнений.

0 голосов
/ 09 апреля 2020

Предположим, всегда квадратная матрица. Это должно построить вашу матрицу.

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]);
     }
}


Для печати на том же шаге просто удалите комментарии для печати

...