желая вырезать скрытый println в Java - PullRequest
0 голосов
/ 31 октября 2019
int anzZeilen = 9;
    int anzZahlen = 1;

    for (int i = 1; i <= 9; i++) {

        System.out.print("      ");

        for (int j = 1; j < anzZeilen; j++) {

            System.out.print("  ");

        }

        if (anzZahlen % 2 != 0) {

            for (int x = 1; x <= anzZahlen; x++) {

                System.out.print("  ");

                System.out.print(x + " ");

            }

        }

        System.out.println();
        anzZahlen++;
        anzZeilen--;

    }

Моя проблема в том, что я создаю 9 новых println, но я хочу создать новую строку только в том случае, если оператор if истинен, поэтому у меня не так много места между ними. как мне это сделать?

мой код выше

мой код с println внутри блока if

1 Ответ

0 голосов
/ 31 октября 2019

Вы можете просто сохранить один StringBuilder и добавить его по пути, печатая только один раз в конце:

int anzZeilen = 9;
int anzZahlen = 1;
StringBuilder msg = new StringBuilder();

for (int i=1; i <= 9; i++) {
    msg.append("      ");
    for (int j=1; j < anzZeilen; j++) {
        msg.append("  ");
    }

    if (anzZahlen % 2 != 0) {
        for (int x = 1; x <= anzZahlen; x++) {
            msg.append("  ").append(x).append(" ");
        }
    }

    msg.append("\n");
    anzZahlen++;
    anzZeilen--;
}

// now print the entire message, once
System.out.println(msg);
...