Как вывести шаблоны звезд ASCII в формате таблицы?

Мне нужна помощь с моей проблемой кода. Мне нужно написать программу, которая отображает звездный узор в табличном формате.

Я не совсем ищу точный код, я хотел бы разобраться в этом сам, поэтому любые предложения и советы будут очень полезны.

звездочки в виде таблицы

// Pattern A Loop
for (int PatternA = 0; PatternA <= 9; PatternA++) { // outerLoop Pattern A
    for (int PatternAI = 0; PatternAI <= PatternA; PatternAI++) { // Inner Loop
        System.out.print("+");
    }
    System.out.println();
}

// Pattern B Loop
for (int PatternB = 0; PatternB <= 10; PatternB++) { // outer loop Pattern B
    for (int PatternBI = 9; PatternBI >= PatternB; PatternBI--) { //Inner Loop
        System.out.print("+");
    }
    System.out.println();
}

person bdupitas    schedule 15.05.2017    source источник


Ответы (2)


Поскольку вы сказали, что вам не нужно полное решение, вот несколько советов.

Во-первых, поскольку ваша таблица должна будет печатать материал как из PatternAI, так и из PatternBI в одной строке, вам следует перемещать эти циклы вместе. Это потребует, чтобы внешний цикл работал для обоих. Вы можете использовать более одной переменной в цикле for:

for (int i = 0, j = 0; i < 10 && j < 2; i++, j++)

Вам также нужно каким-то образом разделить шаблоны. Вы можете использовать пробелы, но они будут различаться по количеству (фактически так же, как и +, так что вы можете использовать это). Вкладки также работают и немного проще. Однако вам придется переключаться между количеством вкладок, которые вы используете, когда линия достигает определенной длины.

Вот и все. Дайте мне знать, если мои подсказки были полезны, или если есть лучший способ сформулировать их.

Вот полный код, если вы застряли:

// Pattern is used for both PatternA and PatternB in this outer loop
// Outer Loop
for (int Pattern = 0; Pattern <= 9; Pattern++) { 
    // Inner Loop PatternA
    for (int PatternAI = 0; PatternAI <= Pattern; PatternAI++) {
        System.out.print("+");
    }
    if (Pattern < 7)
        System.out.print("\t\t");
    else
        System.out.print("\t");
    // Inner Loop PatternB
    for (int PatternBI = 9; PatternBI >= Pattern; PatternBI--) {
        System.out.print("+");
    }
    System.out.println();
}
person River    schedule 15.05.2017

Наружная петля проходит через линии узора, а внутренняя петля проходит через элементы этих линий. Чтобы объединить несколько строк в одну, вы должны объединить несколько внутренних циклов в один внешний цикл.

Попробуйте онлайн!

Например, возьмите эти шаблоны:

четыре шаблона

Несколько внутренних циклов внутри одного внешнего цикла:

int n = 5;
for (int i = -n; i <= n; i++) {
    System.out.print(i == -n ? "a) " : "   ");
    for (int j = -n; j <= n; j++) {
        if (i + j <= 0)
            System.out.print("*");
        else
            System.out.print("-");
    }
    System.out.print(i == -n ? "  b) " : "     ");
    for (int j = -n; j <= n; j++) {
        if (i + j >= 0)
            System.out.print("*");
        else
            System.out.print("-");
    }
    System.out.print(i == -n ? "  c) " : "     ");
    for (int j = -n; j <= n; j++) {
        if (i <= j)
            System.out.print("*");
        else
            System.out.print("-");
    }
    System.out.print(i == -n ? "  d) " : "     ");
    for (int j = -n; j <= n; j++) {
        if (Math.abs(i) + Math.abs(j) <= n)
            System.out.print("*");
        else
            System.out.print("-");
    }
    System.out.println();
}

Выход:

a) ***********  b) ----------*  c) ***********  d) -----*-----
   **********-     ---------**     -**********     ----***----
   *********--     --------***     --*********     ---*****---
   ********---     -------****     ---********     --*******--
   *******----     ------*****     ----*******     -*********-
   ******-----     -----******     -----******     ***********
   *****------     ----*******     ------*****     -*********-
   ****-------     ---********     -------****     --*******--
   ***--------     --*********     --------***     ---*****---
   **---------     -**********     ---------**     ----***----
   *----------     ***********     ----------*     -----*-----

См. также: Как печатать шаблоны ASCII в C#, но с использованием синтаксиса Java?

person Community    schedule 29.06.2021