Я хочу, чтобы моя программа могла стереть весь текст, который он напечатал. Каждый раз, когда он что-то печатает, я вызываю свой метод print()
вместо System.out.print()
, но затем, когда я вызываю метод erase()
, он ничего не делает на консоли Windows 7. Я не могу понять, что случилось; Я провел тест отдельно, который подтвердил, что \b
стирает персонажей, но по какой-либо причине он не будет работать в erase()
. Являются ли символы обратного пространства стиранием друг друга или что-то еще?Как стереть все символы с консоли?
EDIT: Я провел еще несколько тестов. Похоже, что \ b не будет перезаписывать символы новой строки. Поэтому я думаю, мне нужен способ сделать это.
public static int textLength = 0;
public static void erase() {
for (int i = 0; i < textLength; i++) {
System.out.print('\b');
}
textLength = 0;
}
public static void print(String s) {
textLength += s.length();
System.out.print(s);
}
Если возможно, вы должны вводить то, что на самом деле используется для печати вывода. Для вашего стирания пытаетесь ли вы стереть то, что было введено, или вы в основном пишете свою консоль? –
Я не пишу свою консоль, я использую консоль Windows. Все, что печатает программа, добавляет длину в textLength, а затем в нужное время я печатаю это число обратных символов, которое должно стереть все. – ChemicalRocketeer