Правильный отступ в выводе консоли Java / Kotlin - PullRequest
0 голосов
/ 21 января 2019

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

По сути, как я могу получить свой код для отступа на основе уровня отступа предыдущей строки.Если предыдущая строка имеет отступ \t и я делаю "\ n \ t", после этого я бы хотел, чтобы новая строка имела отступ относительно предыдущей строки.Это означает, что я ожидал что-то вроде

String str = "original line (no indention)"
+ "\n"
+ "\t originally indented line"
+ "\n"
+ "\t the second indented line"

Результат будет

original line (no indention)
    originally indented line
    the second indented line

, но я бы хотел, чтобы он был

original line (no indention)
    originally indented line
         the second indented line

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

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Заканчивается, заменяя каждую новую строку \n на \n\t во время каждой итерации, и это, кажется, делает свое дело.Сумасшедший, как это было такое простое решение, что я посмотрел.

0 голосов
/ 21 января 2019

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

public static class Indent{
    private static int numIndents = 0;
    public static String addIndent(String textToIndent){
        numIndents++;
        for(int i = 0; i < numIndents; i++){
            textToIndent = "\t" + textToIndent;
        }
        return textToIndent;
    }
}

Тогда вы можете сделать следующее:

String str = "original line (no indention)"
+ Indent.addIndent("originally indented line") 
+ Indent.addIndent("second indented line");

И таким образом, вам вообще никогда не придется печатать \t.

...