Java печатает шаблон с вложенным циклом - PullRequest
0 голосов
/ 09 мая 2018

Я изо всех сил пытаюсь построить алгоритм, который печатал бы столь необходимый образец. Код следующий:

public static void printPatternH(int size)
{
    for (int row = 1; row <= size; row++)
    {
        for (int col = 1; col <= 2*size; col++)
        {
            if (col > size + row - 1) {
                continue;
            }
            if (col <= size) {
                System.out.print((row + col >= size + 1 ? (row + col)%size : " ") + " ");
            }
            else {
                System.out.print((row + col >= size + 1 ? (row + size)%col : " ") + " ");
            }                
        }
        System.out.println();
    }
}

Результат:
enter image description here

Я понимаю, что если size равно 9, последнее число в середине будет равно 0 как (row + size)%col = 0, однако я не мог найти способ изменить его без изменения остальных значений.

Ответы [ 3 ]

0 голосов
/ 09 мая 2018

Вот ответ на ваш вопрос я надеюсь, что это полезно для вас

 int rowCount = 1;

    System.out.println("Here Is Your Pyramid");

    //Implementing the logic

    for (int i = noOfRows; i > 0; i--)
    {
        //Printing i*2 spaces at the beginning of each row

        for (int j = 1; j <= i*2; j++)
        {
            System.out.print(" ");
        }

        //Printing j value where j value will be from 1 to rowCount

        for (int j = 1; j <= rowCount; j++)             
        {
            System.out.print(j+" ");
        }

        //Printing j value where j value will be from rowCount-1 to 1

        for (int j = rowCount-1; j >= 1; j--)
        {                 
            System.out.print(j+" ");             
        }                          

        System.out.println();

        //Incrementing the rowCount

        rowCount++;
    }
0 голосов
/ 09 мая 2018

Изменение

(row + col)%size

до

(row + col - 1) % size + 1
0 голосов
/ 09 мая 2018

Вы можете проверить «0» и заменить его перед распечаткой.

 if (col <= size) {
     //print left hand side
     int remainder =  (row + col) % size;
     if (remainder == 0) remainder = size; //replace the "0" with size here.
     System.out.print((row + col >= size + 1 ? remainder : " ") + " ");
} else {
     //print right hand side
     System.out.print((row + col >= size + 1 ? (row + size) % col : " ") + " ");
}

это даст этот вывод

                1 
              1 2 1 
            1 2 3 2 1 
          1 2 3 4 3 2 1 
        1 2 3 4 5 4 3 2 1 
      1 2 3 4 5 6 5 4 3 2 1 
    1 2 3 4 5 6 7 6 5 4 3 2 1 
  1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1 
...