Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何替换';已经用Java在屏幕上打印出来了吗?_Java_String_Time_Replace_Clock - Fatal编程技术网

如何替换';已经用Java在屏幕上打印出来了吗?

如何替换';已经用Java在屏幕上打印出来了吗?,java,string,time,replace,clock,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;

我是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);
            }
        }       
    }
}
公共类测试{
公共静态void main(字符串[]args){
测试时钟();
}
公共静态无效时钟(){
整数秒=0;
int min=0;
int h=0;
对于(;;){
sec++;
如果(秒=60){
min++;
秒=0;
}否则如果(最小==60){
h++;
最小值=0;
}如果(h==24),则为else{
h=0;
}
试一试{
睡眠(1000);
}捕捉(中断异常e){
e、 printStackTrace();
}
if(h<10){
系统输出打印(“0”+h+:”);
}否则{
系统输出打印(h+“:”);
}
如果(最小值<10){
系统输出打印(“0”+分钟+“:”);
}否则{
系统输出打印(最小值+“:”);
}
如果(第10节){
系统输出打印项次(“0”+秒);
}否则{
系统输出打印项次(秒);
}
}       
}
}
这是我的密码。下面是我想做的一个例子: 我想把这个打开:
00:00:00
, 进入该行:
00:00:01
(代码会执行此操作,但会打印在新行上,并且不会删除旧时间)。 问题是我想去掉第一个(
00:00:00
),然后在同一行上打印第二个(
00:00:01


这在Java中可能吗?

实际上与Java无关。相反,您希望在其中显示的控制台覆盖文本

这可以通过发送回车符(\r在Java中)而不是换行符(\n在Java中)来完成(在任何语言中)。因此,您永远不会使用println(),只有在您想这样做时才使用print()。如果在第一次打印之前添加一个打印(“\r”),它将执行您想要的操作

顺便说一句,如果您将整个时间构建在一个字符串中,然后一次将其全部输出,它将更加优雅和简单:)

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


警告:这只适用于某些ide和linux/unix终端。相关:另请参阅@McDowell-oh,很好的一个,谢谢。顺便说一句,eclipse可以这样做吗?当我测试它时,它不工作。不,eclipse控制台不支持。如果您从命令行(使用java命令)运行类,它应该可以正常工作(Windows控制台支持它,任何Unix控制台都应该支持它)。好的,谢谢!你知道我还有没有其他编译器可以支持它吗?如果我要用cmd编译,然后每次更改字母都运行它,那就需要很长时间。没有,我已经使用Eclipse很多年了,从那以后就再也没有尝试过其他编译器了(它们都或多或少提供相同的功能)。IDE中的控制台用于调试目的,因此我认为,如果它们支持回车,则不会有任何帮助,因为它可能会掩盖输出。一个简单的解决方法是创建一个.cmd文件(在windows上)它包含java命令,然后是pause命令。您可以在桌面上放置一个指向该命令的快捷方式,它完成所有工作。这不是最舒服的,但比命令行好一点?