一些特殊ACII码的用法 在控制台中覆盖显示、刷新显示和删除字符

 很好奇怎么实现在控制台中不换行直接显示新的信息把旧的替换掉,于是找到了两个ACII码字符,他们可以帮助实现。

一个是‘\b’字符,这个字符是backspace,即删除上一个字符,于是可以清除以显示的旧的信息,然后在同样的位置显示新的信息。

另一个是'\r'字符,这个字符表示回车,注意,是打字机时代的回车,把‘车’退回到行首,但是不换行。在控制台中输出这个符号的时候光标(虽然打印的时候不可见)会回到行首,此时再输出信息就会覆盖掉旧的。但是这样做的缺点是如果旧的一行比新的一行更长,那么新的就无法把旧的全部覆盖掉,旧的后边的部分还会在那儿。不过解决起来也简单,在新的后边加一些空格就好了。

使用'\b'的时候可以用循环把就字符串的长度个‘\b’输出在控制台,就能完全删除旧的字符串了。如果使用'\r'那么在新的字符串后边多加一些空格或者限定每行的长度以固定输出就可以了。

下边是用'\b'的java代码演示:

package test;

public class Test {
    public static int a=0;
    public static void main(String[] args) {
        int i=0;
        for (int j = Integer.MIN_VALUE; j < Integer.MAX_VALUE; j++) {
            System.out.print(j);
            try {
                Thread.sleep(50);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            for (int j2 = 0; j2 < (j+"").length(); j2++) {
                System.out.print("\b");
            }
        }
    }
}

 

posted @ 2019-05-22 20:07  sebastia  阅读(601)  评论(0编辑  收藏  举报