2012-05-21 2 views
0

Я хочу, чтобы моя программа могла стереть весь текст, который он напечатал. Каждый раз, когда он что-то печатает, я вызываю свой метод 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); 
} 
+0

Если возможно, вы должны вводить то, что на самом деле используется для печати вывода. Для вашего стирания пытаетесь ли вы стереть то, что было введено, или вы в основном пишете свою консоль? –

+0

Я не пишу свою консоль, я использую консоль Windows. Все, что печатает программа, добавляет длину в textLength, а затем в нужное время я печатаю это число обратных символов, которое должно стереть все. – ChemicalRocketeer

ответ

4
Runtime.getRuntime().exec("cls"); 

EDIT: Похоже, что это не решение, которое вы ищете. При использовании

System.out.print('\b'); 

вы должны знать, что это не стирает то, что уже было напечатано. Вместо этого каждое обратное пространство перемещает курсор назад один символ. Чтобы на самом деле стереть то, что вам нужно, перепишите его другим текстом.

+0

Спасибо, но я не уверен, хочу ли я полностью очистить консоль. Кроме того, это специфичная для ОС, которая поражает цель, когда вы работаете с Java. Я буду использовать его, пока не найду что-то лучше. – ChemicalRocketeer

+0

См. Мое редактирование. Это вам помогает? Подумайте о System.out.print ('\ b'); используя клавиши со стрелками в текстовом редакторе. – Tobold

+0

О вашем редактировании: да, стирать() не будет возвращать линии. – Tobold

Смежные вопросы