Невозможно декодировать логику этого шаблона
Я хочу напечатать шаблон, когда пользователь вводит нет. "N" будет печатать шаблон, как показано ниже, со всеми внешними плечами шаблона будет содержать "N" - ".
/\
/ \
/ /\ \
/ / \ \
\ \ / /
\ \/ /
\ /
\/
Я много пытался расшифровать, но я не могу расшифровать, я пробовал несколько вещей. Если кто-то поможет мне или направит меня с этой логикой, это будет отличная помощь.
int num=4;
int input = num*2;
String[][] arr = new String[input][input];
for (int i = 0; i < input; i++) {
for (int j = 0; j < input; j++) {
if (j+1== num - i) {
arr[i][j] = "/";
System.out.print(arr[i][j]);
} else if (j + 1 == num + i + 1) {
arr[i][j] = "\\";
System.out.print(arr[i][j]);
} else {
arr[i][j] = "-";
System.out.print(arr[i][j]);
}
}
System.out.println();
}
1 ответ
Ну, может быть, не лучшее решение в мире, но..
public class PatternPrinter {
public static void main(String[] args) {
PatternPrinter pp = new PatternPrinter();
for (String arg : args) {
pp.printPattern(Integer.parseInt(arg));
}
}
private void printPattern(int outerArms) {
printUpperArms(outerArms, "/", "\\");
printLowerArms(outerArms, "\\", "/", " ");
}
private void printUpperArms(int arms, String leftArm, String rightArm) {
int leftspaces = 0;
int rightspaces = 0;
int leftArms = 1;
int rightArms = 1;
for (int i = 0; i < arms; i++) {
for (leftspaces = 0; leftspaces < arms - leftArms; leftspaces++) {
System.out.print(" ");
}
for (int j = 0; j < leftArms; j++) {
System.out.print(leftArm);
}
for (int h = 0; h < rightArms; h++) {
System.out.print(rightArm);
}
for (rightspaces = 0; rightspaces < arms - leftArms - rightArms - leftspaces; rightspaces++) {
System.out.print(" ");
}
System.out.println("");
leftArms++;
rightArms++;
}
}
private void printLowerArms(int arms, String leftArm, String rightArm, String shift) {
int leftspaces = 0;
int rightspaces = 0;
int rightArms = arms;
int leftArms = arms;
for (int i = 0; i < arms; i++) {
System.out.print(" ");
for (leftspaces = 0; leftspaces < arms - leftArms; leftspaces++) {
System.out.print(shift);
}
for (int j = 0; j < leftArms; j++) {
System.out.print(leftArm);
}
for (int h = 0; h < rightArms; h++) {
System.out.print(rightArm);
}
for (rightspaces = 0; rightspaces < arms - leftArms - rightArms - leftspaces; rightspaces++) {
System.out.print(" ");
}
System.out.println("");
leftArms--;
rightArms--;
}
}