0

我希望我的程序能够擦除它打印的所有文本。每次它打印一些东西时,我都会调用我的print()方法而不是System.out.print(),但是当我调用该erase()方法时,它似乎在 Windows 7 控制台中没有做任何事情。我不知道发生了什么;我单独进行了一项测试,确认\b确实会擦除字符,但无论出于何种原因,它都无法在erase(). 退格字符是相互擦除还是什么?

编辑:我已经进行了更多测试。看起来 \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);
}
4

1 回答 1

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

编辑:似乎这不是您正在寻找的解决方案。使用时

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

您需要注意这不会删除已打印的内容。相反,每个退格键都会将光标向后移动一个字符。然后要真正擦除那里的内容,您需要用其他文本覆盖它。

于 2012-05-21T15:25:28.640 回答