Программы шаблонов часто используются на собеседованиях для оценки логических способностей кандидата. Пирамидальные шаблоны очень популярны, и после того, как мы понимаем логику их создания, написание кода для достижения того же становится простой задачей.
Программы шаблонов пирамид в Java
Вот несколько примеров создания различных пирамид из чисел, символов и т. д. Мы также рассмотрим примеры создания инвертированных пирамид в программе на Java. Мы постараемся сохранить код простым, чтобы его легко было понять.
Пирамидальный шаблон из чисел
Если посмотреть на первый шаблон, то каждая строка содержит одно и то же число, напечатанное одинаковое количество раз. Однако каждая строка имеет ведущие пробелы, их количество равно “rows-i”. Давайте рассмотрим программу для печати этого шаблона.
package com.journaldev.patterns.pyramid;
import java.util.Scanner;
public class PyramidPattern {
private static void printPattern1(int rows) {
// для цикла по строкам
for (int i = 1; i <= rows; i++) {
// пробелы перед числами
int numberOfWhiteSpaces = rows - i;
//печатаем ведущие пробелы
printString(" ", numberOfWhiteSpaces);
//печатаем числа
printString(i + " ", i);
//переходим на следующую строку
System.out.println("");
}
}
//вспомогательная функция для печати строки заданное количество раз
private static void printString(String s, int times) {
for (int j = 0; j < times; j++) {
System.out.print(s);
}
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Please enter the rows to print:");
int rows = scanner.nextInt();
// System.out.println("Строки = "+rows);
scanner.close();
System.out.println("Printing Pattern 1\n");
printPattern1(rows);
}
}
Обратите внимание, что я создал вспомогательную функцию для общей задачи печати строк. Если вы можете разделить вашу программу на короткие переиспользуемые функции, то это показывает, что вы не только стремитесь написать программу, но и хотите убедиться в ее качестве и возможности повторного использования. Когда мы запускаем программу выше, мы получаем следующий вывод.
Please enter the rows to print:
9
Printing Pattern 1
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
6 6 6 6 6 6
7 7 7 7 7 7 7
8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9

Пирамида Из Нарастающих Чисел
Вот функция для печати паттерна 2. Ключевой момент, который следует заметить, – это количество ведущих пробелов, а затем числа печатаются в возрастающем порядке.
/**
*
* Program to print below pyramid structure
* 1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8 9
*/
private static void printPattern2(int rows) {
// для цикла по строкам
for (int i = 1; i <= rows; i++) {
// пробелы перед числами
int numberOfWhiteSpaces = rows - i;
//печатаем ведущие пробелы
printString(" ", numberOfWhiteSpaces);
//печатаем числа
for(int x = 1; x<=i; x++) {
System.out.print(x+" ");
}
//переходим на следующую строку
System.out.println("");
}
}
Пирамида Из Символов
Это действительно простой пример, нам просто нужно напечатать символ без каких-либо вычислений или манипуляций.
/**
* Program to print following pyramid structure
*
* *
* * *
* * * *
* * * * *
* * * * * *
* * * * * * *
* * * * * * * *
* * * * * * * * *
*/
private static void printPattern3(int rows) {
// цикл for для строк
for (int i = 1; i <= rows; i++) {
// пробелы в начале чисел
int numberOfWhiteSpaces = rows - i;
// печать ведущих пробелов
printString(" ", numberOfWhiteSpaces);
// печать символа
printString("* ", i);
// переход на следующую строку
System.out.println("");
}
}
Программа шаблона пирамиды 4
/**
*
* 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
*/
private static void printPattern4(int rows) {
// цикл for для строк
for (int i = 1; i <= rows; i++) {
// пробелы в начале чисел
int numberOfWhiteSpaces = (rows-i)*2;
// печать ведущих пробелов
printString(" ", numberOfWhiteSpaces);
// печать чисел
for(int x=1; x0; j--) {
System.out.print(j+" ");
}
// переход на следующую строку
System.out.println("");
}
}
Обратите внимание, что в каждой строке есть 2*r-1 чисел. Поэтому у нас будет (строки-i)*2 пробела перед тем, как мы напечатаем какое-либо число. Затем числа начинаются с 1 и до “i”, а затем снова до 1. Наша логика печати чисел потребует два цикла for для достижения этого.
Программа шаблона пирамиды 5 на Java
/**
*
* 9
8 9 8
7 8 9 8 7
6 7 8 9 8 7 6
5 6 7 8 9 8 7 6 5
4 5 6 7 8 9 8 7 6 5 4
3 4 5 6 7 8 9 8 7 6 5 4 3
2 3 4 5 6 7 8 9 8 7 6 5 4 3 2
1 2 3 4 5 6 7 8 9 8 7 6 5 4 3 2 1
*/
private static void printPattern5(int rows) {
// цикл for для строк
for (int i = rows; i >= 1; i--) {
// пробелы в начале чисел
int numberOfWhiteSpaces = i*2;
// печать ведущих пробелов
printString(" ", numberOfWhiteSpaces);
// печать чисел
for(int x=i; x=i; j--) {
System.out.print(j+" ");
}
// переход на следующую строку
System.out.println("");
}
}
Обратная пирамида Шаблон символов
Вот фрагмент кода программы обратной пирамиды.
/**
*
* * * * * * * * *
* * * * * * * *
* * * * * * *
* * * * * *
* * * * *
* * * *
* * *
* *
*
*/
private static void printPattern6(int rows) {
// цикл for для строк
for (int i = rows; i >= 1; i--) {
// пробелы в начале чисел
int numberOfWhiteSpaces = rows - i;
// печать ведущих пробелов
printString(" ", numberOfWhiteSpaces);
// печать символа
printString("* ", i);
// переход на следующую строку
System.out.println("");
}
}
Обратный пирамидный шаблон чисел
Давайте рассмотрим пример обратного пирамидного шаблона, состоящего из чисел.
/**
*
9 9 9 9 9 9 9 9 9
8 8 8 8 8 8 8 8
7 7 7 7 7 7 7
6 6 6 6 6 6
5 5 5 5 5
4 4 4 4
3 3 3
2 2
1
*/
private static void printPattern7(int rows) {
// цикл for для строк
for (int i = rows; i >= 1; i--) {
// пробелы в начале чисел
int numberOfWhiteSpaces = rows - i;
// печать ведущих пробелов
printString(" ", numberOfWhiteSpaces);
// печать символа
printString(i+" ", i);
// переход на следующую строку
System.out.println("");
}
}
Вывод
Существует много типов пирамидальных узоров. Самое важное – понять узор, в котором организованы числа и пробелы. Как только вы понимаете узор, вы можете легко писать код на Java или любом другом языке программирования. Пожалуйста, дайте мне знать, если вы ищете какую-то конкретную программу для паттерна, и я постараюсь помочь вам.
Дополнительное чтение
Программы строк в Java и Вопросы на собеседовании по Java-программированию
Вы можете проверить полный код и другие примеры программирования в нашем репозитории GitHub.
Source:
https://www.digitalocean.com/community/tutorials/pyramid-pattern-programs-in-java