Въведение в Шаблоните в Java

В статия Patterns in Java, преди да научите какъвто и да е език за програмиране на Java и да се потопите дълбоко в усъвършенстваните концепции, е много важно и най-важното място да разберете работата на контурите. Въпреки че има 3 вида бримки, които са за, докато и направете цикъл. Всеки цикъл се използва в зависимост от конкретната ситуация на програмата, тъй като те са малко по-различни един от друг. За да се използват различни контури, се изисква някаква логика на програмиране и за тази цел на програмистите се дава практика на модели, тъй като включва използването на логическа и разсъждаваща мощност. Това може да бъде отпечатването на геометрични фигури (като триъгълник, квадрат и т.н.), пирамида, кутии в различни шарки на звезди, числа, стил на символи на екрана на конзолата. Форматът или основният синтаксис на бримките могат да се различават от един език на програмиране на друг, но общата логика за отпечатване на тези модели остава същата.

Пример за шаблони в Java

Нека разберем как да нарисуваме модели в Java чрез някои примери

Пример 1: Печат на полупирамида с помощта на числа.

Код:

public class Pyramid
(
public static void main(String() args)
(
int i, j;
​//outermost loop to represent the number of rows which is 5 in this case for(i= 1; i<= 5; i++)
(
​//innermost loop is to print the numbers in the specific rows for (j=1; j<=i; j++)
(
System.out.print(j +" " );
)
System.out.println();
)
)
)

изход:

В горния пример са необходими само 2 основни бримки за отпечатване на шаблона, първата за цикъл е за броя на редовете. В нашия случай сме дефинирали редовете, т.е. 5, в противен случай можем да вземем и входа от потребителя и да го съхраним в променлива. Вътрешният цикъл е да отпечатате числата в определен ред, След завършването на 1 ред или края на 'j' контура, редът се променя с println ().

Пример2: Печат на стрелка на числа.

Код:

public class NumberTriangle
(
public static void main(String() args)
(
int i, j;
int rows =7;
​//outermost loop to represent the number of rows which is 7 in this case
//for the upper half of arrow
for (i=1; i<= rows; i++)
(
​//innermost loop is to print the numbers in the specific rows
//for the upper half of arrow
for (j=1; j<=i; j++)
(
System.out.print(j + " ");
)
System.out.println();
)
​//outermost loop to represent the number of rows which is 6 in this case
//for the lower half of arrow
for (i=rows-1; i>=1; i--)
(
​//innermost loop is to print the numbers in the specific rows
//for the lower half of arrow
for (j=1; j<=i; j++)
(
System.out.print(j + " ");
)
System.out.println();
)
)
)

изход:

В горния пример трябва да разделим стрелката на две половини и да използваме 2 бримки за всяка половина. В първата половина на броя на редовете би била първоначалната стойност, зададена за редовете, докато за долната половина броят на реда е 1 по-малък от първоначалната стойност. Вътрешните бримки за двете половини се използват за повторение през всеки ред според външния контур.

Пример 3: Печат на пълна пирамида с помощта на звезди (*).

Код:

public class FullPyramid
(
public static void main(String() args)
(
int i, j, k;
int rows = 5;
//outermost loop to represent the number of rows which is 5 in this case for(i= 1; i<= rows; i++)
(
//innermost loop to represent the spaces in pyramid for (j= 1; j<= rows-i; j++)
(
System.out.print(" ");
)
​//innermost loop to represent the stars (*) in pyramid for (k= 1; k<= 2*i-1; k++)
(
System.out.print("* ");
)
System.out.println();
)
)
)

изход:

В горния пример трябва да направим 3 неща, т.е. имайки предвид общия брой редове за отпечатване на пирамидата, за която първият цикъл работи от променлива от 1 до редове. Второ, първо трябва да отпечатаме интервалите в пирамидата и след това шаблона (*) след интервалите. За тази втора и трета се използват контури, които са вътре във външната верига 'i'.

Пример 4: Печат на половината обратна пирамида с помощта на числа.

Код:

public class ReversePyramid
(
public static void main(String() args)
(
int i, j, k;
int rows = 5;
​//outermost loop to represent the number of rows which is 5 in this case for(i= 1; i<= rows; i++)
(
//innermost loop to represent the spaces
for (j= 1; j<= rows-1; j++)
(
System.out.print(" ");
)
​//innermost loop to represent the stars (*) in pyramid for (k= 1; k<= i; k++)
(
System.out.print("* ");
)
System.out.println();
)
)
)

изход:

Простата полупирамида е лесна, тъй като трябва да обработваме числата, * или символите, които печатаме, но за обратната пирамида е необходимо първо да отпечатаме интервалите и след това шаблона, който е (*) в нашия случай. Така че 3 за бримки се използват като по същия начин, в случай на пълната пирамида.

Пример 5: Печат на полупирамида с помощта на азбуки.

Код:

public class AlphabetPyramid
(
public static void main(String() args)
(
int i, j;
​//outermost loop to represent the number of rows which is 5 in this case for(i= 1; i<= 5; i++)
(
int ch = 65;
​//innermost loop to represent the alphabets in a pyramid in particular row for (j= 1; j<= i; j++)
(
System.out.print((char)(ch + i - 1) + " ");
)
System.out.println();
)
)
)

изход:

Пирамидата се отпечатва със същата логика, както е използвана в горния пример, като се използват 2 за контури, един за броя на редовете и други за отпечатването на символи в определен ред. Но основното, което трябва да се отбележи, е боравенето с данни от символи. 'A' има числова стойност 65 в Java, така че цялата математическа логика се изпълнява с помощта на числовата стойност на азбуката и в крайна сметка тя се отпечатва във формат на знака.

Пример 6: Шаблон на печат на азбуки.

Код:

public class AlphabetPattern
(
public static void main(String() args)
(
int i, j;
//outermost loop to represent the number of rows which is 5 in this case for(i= 1; i<= 5; i++)
(
int ch = 65;
​//innermost loop to represent the alphabets for (j= 1; j<= i; j++)
(
System.out.print((char)(ch - 1 + j) + " ");
)
System.out.println();
)
)
)

изход:

Основният модел, следван за справяне със стойността на знака, а 2 за цикли в горния пример е подобен на пример 5, като разликата е просто простата логика, използвана за отпечатване на желания шаблон.

Пример 7: Печат на квадрат с помощта на звезди (*).

Код:

public class SquarePattern
(
public static void main(String() args)
(
int i, j;
​//outermost loop to represent the number of rows which is 5 in this case for(i= 1; i<= 5; i++)
(
int ch = 65;
//innermost loop to represent the stars (*) for (j= 1; j<= 5; j++)
(
System.out.print(" * " + " ");
)
System.out.println();
)
)
)

изход:

За отпечатване на квадрат ни е нужна дължина и ширина, т.е. двете страни на квадрата трябва да са еднакви, което е 5 в нашия случай. Така че първият цикъл се използва за дължината или броя на редовете в квадрат, а вътрешният за контура се използва за ширината на квадрата, т.е. 5 звезди в един ред.

Пример 8: Печат на правоъгълник с помощта на звезди (*).

Код:

public class RectanglePattern
(
public static void main(String() args)
(
int i, j;
​//outermost loop to represent the number of rows which is 5 in this case for(i= 1; i<= 5; i++)
(
int ch = 65;
​//innermost loop to represent columns the stars (*) for (j= 1; j<= 9; j++)
(
System.out.print(" * " + " " );
)
System.out.println();
)
)
)

изход:

Основната логика за отпечатване на правоъгълника на (*) е същата като отпечатването на квадрати, като единствената разлика е различна дължина и ширина на правоъгълника. Тук цикълът 'i' е за дължината на правоъгълника, а вътрешният 'j' цикъл е за ширината на контура. В нашата програма тя се приема като постоянна стойност, можем също така да поискаме от потребителя и да ги съхраним в отделни променливи.

Пример 9: Печат на диамант с помощта на звезди.

Отпечатването на диамант в Java е много прост процес. Тя включва отпечатване на 2 пирамиди, 1 в посока нагоре и друга в обърната посока. Така че по принцип трябва да използваме бримките по същия начин, по който правим кодирането за отпечатване на две отделни пирамиди.

Код:

public class Diamond
(
public static void main(String() args)
(
int i, j, k;
int rows = 5;
​//outermost loop to represent the number of rows which is 5 in this case.
// Creating upper pyramid
for(i= 1; i<= rows; i++)
(
//innermost loop to represent the spaces in upper pyramid for (j= 1; j<= rows-i; j++)
(
System.out.print(" ");
)
​//innermost loop to represent the stars (*) in upper pyramid for (k= 1; k<= 2*i-1; k++)
(
System.out.print("* ");
)
System.out.println();
)
​//outermost loop for the rows in the inverted pyramid for (i = rows-1; i>0; i--)
(
​//innermost loop for the space present in the inverted pyramid for (j=1; j<= rows - i; j++)
(
System.out.print(" ");
)
​//innermost loop inside the outer loop to print the ( * ) pattern in inverted pyramid for (k = 1; k<= 2*i-1; k++)
(
System.out.print("* ");
)
System.out.println();
)
)
)

В горния пример се прилага почти една и съща логика за създаване на двете пирамиди, едната в посока нагоре и друга в обърната посока. Най-напред за цикъл е за броя на линиите или редовете в шаблона, а други два за контури са за интервали и звездите (*) в шаблона.

изход:

Пример 10: Печат на двоични числа във стълбищен формат.

Код:

public class BinaryStair
(
public static void main(String() args)
(
int i, j;
//outer loop for the total rows which is 5 in this case for (i = 1; i <= 5; i++)
(
​//inner loop for the pattern of 0 and 1 in each row for (j = 1; j<= i ; j++)
(
if (j % 2 ==0)
(
System.out.print(0);
)
else
(
System.out.print(1);
)
)
System.out.println();
)
)
)

изход:

В горния пример, за да се отпечата двоичен шаблон, външният за цикъл 'i' се използва за общия брой редове, а вътрешният за цикъл 'j' се използва за повторение до външния цикъл 'i', защото за за 1-и ред ни е нужна 1 стойност, за 2-ри ред ни трябват 2 стойности и т.н. Ако и други оператори се използват за отпечатване на алтернативна стойност от 0 и 1. Да предположим, че за първи път i = 1, j = 1 и 1% 2! = 0, тогава се отпечатва 1 и изпълнението ще се премести от вътрешен контур.

Пример 11: Програма за отпечатване на повтарящ се азбучен шаблон.

Код:

public class AlphabetReverseOrder
(
public static void main(String() args)
(
int i, j, k;
//outer loop for the total rows which is 5 in this case for (i = 0 ; i<=5; i++)
(
int ch= 65;
//inner loop for the pattern of alphabets in till 'i' loop for (j = 0; j <=i ; j++)
(
System.out.print((char) (ch+j) + " ");
)
//inner loop for the pattern of alphabets in reverse order from 'i' loop for (k= i-1; k >=0; k--)
(
System.out.print((char) (ch+k) + " ");
)
System.out.println();
)
)
)

изход:

В горния пример, ако наблюдаваме всеки ред шаблон, трябва първо да отпечатаме азбуката в увеличаващ се ред, т.е. AB и след това в обратен ред, т.е. AB A. За това са ни необходими 3 бримки, 1-ва за цикъл за общия брой редове. 2-ри за цикъл за отпечатване на азбуките в увеличаващ се ред, след това 3-ти за цикъл, който остава вътре във външния цикъл 'i' и отпечатва азбуките в същия ред, но в обратен ред на 'j' цикъл.

заключение

Горният пример и техните обяснения ясно показват как да се правят такива модели в Java. Въпреки че тези модели изглеждат трудни в началото, но да ги наблюдавате дълбоко как повторението на шаблона се случва в един ред и в зависимост от това колко бримки трябва да се използват, става лесно за това. Днес, също така в интервюта на големи компании, кандидатите са помолени да напишат логиката на моделите на различни нива на трудност. Тъй като това създаване на модел показва основните логически и програмни знания на даден човек.

Препоръчителен член

Това е ръководство за Моделите в Java. Тук обсъждаме Въведение в шаблоните в Java и примерите за различни модели заедно с резултатите. Можете да разгледате и другите ни предложени статии, за да научите повече -

  1. Звездни модели в Java
  2. Рамки в Java
  3. Оформление в Java
  4. Въведение в моделите в PHP
  5. Модели в JavaScript с примери