如何替换已在Java中打印的文本?

时间:2012-08-02 12:49:29

标签: java string time replace clock

我是Java新手,为了了解更多信息,我尝试制作一个时钟。它工作得很好,除了每次每秒都改变时它在新行上打印的事实。如何制作它以便我可以用新时间替换已经打印出来的文本?

public class test {
    public static void main(String[] args) {
        test.clock();
    }
    public static void clock() {
        int sec = 0;
        int min = 0;
        int h = 0;
        for(;;) {
            sec++;
            if(sec == 60) {
                min++;
                sec = 0;
            } else if(min == 60) {
                h++;
                min = 0;
            } else if(h == 24) {
                h = 0;
            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            if(h < 10) {
                System.out.print("0"+h+":");
            } else {
                System.out.print(h+":");
            }
            if(min < 10) {
                System.out.print("0"+min+":");
            } else {
                System.out.print(min+":");
            }
            if(sec < 10) {
                System.out.println("0"+sec);
            } else {
                System.out.println(sec);
            }
        }       
    }
}

这是我的代码。这是我正在尝试做的一个例子: 我想转此:00:00:00, 到此:00:00:01(代码执行此操作但它在新行上打印并且不删除旧时间)。 问题是我想摆脱第一个(00:00:00)并在同一行打印第二个(00:00:01)。

这在Java中是否可行?

3 个答案:

答案 0 :(得分:15)

实际上与java无关。而是希望显示的控制台覆盖文本。

这可以通过发送回车符(在Java中为\ r)而不是换行符(在Java中为\ n)来完成(以任何语言)。所以你从不使用println(),如果你想这样做只打印()。如果在第一次打印之前添加一个打印(“\ r”),它应该按照你想要的那样。

顺便说一句,如果你在一个字符串中构建整个时间然后立即输出它,那将会更加优雅和简单:)

答案 1 :(得分:0)

只是为了使这更简单,你可以通过使用&#34;抛出InterruptedException&#34;来消除try catch东西。像这样:

public static void main(String[] args) throws InterruptedException {
System.out.println("wait for it....");
Thread.sleep(5000);
System.out.println("ok :)");

}

不再尝试捕捉东西。我为我所在的机器人团队学习了编程自编码。非常有用!

答案 2 :(得分:0)

System.out.print(“ \ u001B [D”);向左更改光标位置一次。 您可以尝试使用A-D字母。

警告仅在某些ide和linux / unix终端上有效。