Оператор возврата в зависимости от System.out.print в цикле for - PullRequest
0 голосов
/ 30 октября 2019

Мой код состоит в том, что он создает матрицу, состоящую из двоичных значений, в зависимости от входных данных, касающихся размера и значений в первой строке. Для вывода я использую два цикла for для печати каждой ячейки в матрице соответственно.

import java.util.Arrays;
public class TrianglePattern {
    private int n;
    private int h;
    private int[] initial;
    public static void main(String[] a) {
        int[] init = {10};
        int n = 21, h = 8;
        TrianglePattern tp = new TrianglePattern(n, h, init);

        for (int r = 0; r < tp.getH(); r++) {
            for (int c = 0; c < tp.getN(); c++) {
                System.out.print(tp.getValueAt(r, c));
            }
            System.out.println();
        }
    }
    public TrianglePattern (int n , int h , int[] initial ) {
        if (n<5)
            throw new IllegalArgumentException();
        this.n = n;
        this.h = h;
        this.initial = initial;
    }
    public int getValueAt (int r, int c) {
        int[][] multi = new int[h+1][n+1];
        for (int i=0; i < initial.length; i++)
            multi[0][initial[i]] = 1;
        multi[r][0] = 0;
        multi[r][n-1] = 0;
        for (r = 1; r < h; r++) {
            for (c = 1; c < n-1; c++) {
                if (multi[r-1][c-1] == 0 && multi[r-1][c] == 0 && multi[r-1][c+1] == 1 ||
                    multi[r-1][c-1] == 0 && multi[r-1][c] == 1 && multi[r-1][c+1] == 0 ||
                    multi[r-1][c-1] == 0 && multi[r-1][c] == 1 && multi[r-1][c+1] == 1 ||
                    multi[r-1][c-1] == 1 && multi[r-1][c] == 0 && multi[r-1][c+1] == 0)
                    multi[r][c] = 1;
                else
                    multi[r][c] = 0;
            }
        }
        return multi[r][c];
    }
}

Теперь это дает мне следующий вывод.

000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000
000000000000000000000

Я знаю, что это потому, что г вgetValueAt равно h и c равно n. Поэтому я беру ячейку в последнем ряду и последнем столбце и распечатываю ее в обоих циклах. Вывод, который я хочу получить, следующий:

000000000010000000000
000000000111000000000
000000001100100000000
000000011011110000000
000000110010001000000
000001101111011100000
000011001000010010000
000110111100111111000

Итак, опять мой вопрос: есть ли способ сделать оператор return в методе getValueAt зависимым от чисел в циклах for? Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...