public class F2E12 {

    public static final int DIM = 5;

    public static void main(String[] args) {
        printMatrix(DIM);

    }

    public static void printMatrix(int n) {
        int i = 0;
        int j = 0;
        for(;i<=n;i++) {
            for(;j<=n;j++) {
                System.out.print(j + " ");
            }
            System.out.print("\n");

        }
    }
}

Я хочу напечатать матрицу, которая увеличивает первое число каждой строки на единицу. Приведенный выше код должен выдать:

  1. 0 1 2 3 4 5
  2. 1 0 1 2 3 4
  3. 2 1 0 1 2 3
  4. 3 2 1 0 3 4
  5. 4 3 2 1 0 1
  6. 5 4 3 2 1 0

Вместо этого он печатает. «0 1 2 3 4 5»

1
Alex5207 16 Сен 2018 в 15:10

2 ответа

Лучший ответ

Ваш текущий код не работает, потому что j попадает в n на первой итерации i. Вы можете переместить j в цикл, например

// int j = 0;
for (; i <= n; i++) {
    int j = 0;
    for (; j <= n; j++) {

Чтобы исправить это.

4
Elliott Frisch 16 Сен 2018 в 12:13
public static void printMatrix(int n) {
    for (int i = 0; i <= n; i++) {
        for (int j = 0; j <= n; j++) {
            System.out.print(Math.abs(j - i) + " ");
        }
        System.out.print("\n");
    }
}
7
Бешеный Пингвин 16 Сен 2018 в 12:18