Я пытаюсь добавить строку в StringBuilder. У меня настроен код.
Это то, что я ввожу
this = "is"\na = "test"
Это вывод, который я получаю
this = "is"
this = "is"
a = "test"
мой ожидаемый результат -
this = "is"
a = "test"
Вот мой код, который выполняет эту работу. У меня есть класс, который implements
следующие классы CharSequence, Appendable, Serializable
и затем я переопределяю добавление, используя код ниже
@Override
public IndentingStringBuilder append(CharSequence csq) {
append(csq, 0, csq.length());
return this;
}
@Override
public IndentingStringBuilder append(CharSequence csq, int start, int end) {
while (start < end) {
if (csq.charAt(start) == '\n') {
writeLine(csq.toString(), start);
stringBuilder.append(newLine);
beginningOfLine = true;
start++;
} else {
start++;
}
}
writeLine(csq.toString(), start);
return this;
}
private void writeLine(String str, int end) {
if (beginningOfLine && end > 0) {
writeIndent();
beginningOfLine = false;
}
stringBuilder.append(str, 0, end);
}
private void writeIndent() {
for (int i = 0; i < indentLevel; i++) {
stringBuilder.append(' ');
}
}
это глобальные переменные, определенные
private static final String newLine = System.getProperty("line.separator");
private int indentLevel = 0;
private StringBuilder stringBuilder = new StringBuilder();
Что я здесь не так делаю? и как бы я исправить это, чтобы получить правильные результаты для моего ввода?