82

我正在创建一个小的 Java 应用程序,它应该有一个带有百分比的进度指示器。在每个循环中,它\b在显示下一个百分比之前使用退格键删除显示的进度。

这是一个简化的示例:

public static void main(String[] args) throws Exception {
    System.out.print("Progress: ");
    for (int percentage = 0; percentage < 100; percentage++) {
        System.out.print(percentage + "%");
        Thread.sleep(10); // Stub for "long running task".
        int length = String.valueOf(percentage).length() + 1;
        while (length-- > 0) {
            System.out.print('\b');
        }
    }
    System.out.println("finished!");
}

这在命令提示符下完美运行,但在 Eclipse 的控制台中无法识别退格字符(Galileo build 20090920-1017)。相反,它显示一个表示未知字符的空方块。看截图:

替代文字

如何让 Eclipse 正确“显示”退格?即让它删除前一个字符。

这实际上没有什么大不了的,因为它只会在命令控制台中运行,但让它在 Eclipse 中也能工作会很好:)

4

5 回答 5

57

Eclipse 错误 #76936。 我不会指望他们修复它,并且没有列出解决方法。

您可能很幸运地找到了一个提供更高级控制台的插件。

于 2010-06-22T18:31:18.000 回答
8

好吧,确实不能使用退格 \b 来删除显示的进度,但是您可以通过调用 println 的循环清除控制台来删除它。当然,这个 kluge 不会清除您的日志文件!

于 2010-06-22T23:18:33.430 回答
4

现在他们修复了它,但默认情况下它被禁用。您应该通过Interpret ASCII control characters控制台首选项启用它。

于 2020-05-10T19:54:35.580 回答
3

固定,日食火星。

请注意,我不会使用它来进行持续更新,因为 Eclipse 控制台滞后。

于 2015-07-25T00:52:18.967 回答
-4

use: System.out.print("\b ") inside the while loop, instead of System.out.print('\b');

于 2016-07-25T21:49:44.117 回答