为什么这些退格键不打印

Why these backspace are not printing

我正在尝试使用以下代码获取给定整数的阶乘,但最终的 \b 未打印。为什么?

import java.util.*;

class Example {
    public static void main(String args[]) {
        Scanner input = new Scanner(System.in);
        System.out.println("INPUT AN INTEGER");
        int num = input.nextInt();
        System.out.print(num + "!=");
        for(int i = num; i > 0; i = i - 1){
            System.out.print(i + "*");
        }
        System.out.print("\b");
    }
}

如前所述,各种输出终端的功能千差万别。有完整的 VT100 终端、Windows 命令行提示、IDE 中的视图等。因此可能不是每个终端都支持退格键。

但是,您不应生成文本除非它是必需的。不要回溯或 - 在这种情况下 - 退格 after 事实。这是一个容易出错的过程,首先创建字符串会使用更多的内存资源。后者对于单个 * 不是问题,但通常您会尝试避免虚假内存使用。


以下代码应该有效:

for (int i = num; i > 0; i--){
    if (i != num) {
        print("*");
    }
    System.out.print(i);
}

还要注意使用 i-- 而不是 i = i - 1


当你准备好前进时,你可能想看看 String.format()StringBuilder class 并在 before打印出来。

原则上,如果您首先创建一个字符串,您当然可以使用子字符串删除最后的 * 字符。或者,如果您使用它,您可以将其从 StringBuilder 实例中删除。

仍然不希望首先附加它并使用上面的代码或对其稍作修改来构建整个字符串。