如何用java更新控制台输出?

如何用java更新控制台输出?,java,string,windows,escaping,unicode-escapes,Java,String,Windows,Escaping,Unicode Escapes,我必须更新我的控制台 下面是一个示例代码: 我的输出: abcd ijkl 预期产出: ijkl efgh 我也试过这个: System.out.print("abcd\n"); System.out.print("efgh\n"); System.out.print("\033[0;0H");//\033[0;0H is an escape sequence to positioning the console cursor(Referred

我必须更新我的控制台

下面是一个示例代码:

我的输出:

abcd
ijkl
预期产出:

ijkl
efgh
我也试过这个:

        System.out.print("abcd\n");
        System.out.print("efgh\n");
        System.out.print("\033[0;0H");//\033[0;0H is an escape sequence to positioning the console cursor(Referred From Internet).
        System.out.print("ijkl");
对于上述代码,输出为:

abcd
efgh
←[0;0Hijkl
当我尝试在线编译时,上面的代码运行良好。

但它在windows和linux操作系统中不起作用

请告诉我,为了获得预期的输出,我必须做哪些更改


谢谢大家。

您需要了解字符文字\n和\r之间的区别。它因系统而异。虽然这两种方法的使用意义相似,但它们的工作方式不同\r用作回车符。它只需将光标推回到行的开头。在你的例子中,它完全是在模仿相同的场景

当编译器编译这段代码时 System.out.printabcd\n;//在控制台上打印abcd。 System.out.printefgh;//在控制台上打印efgh。 System.out.print\r\r\rijkl//将光标移到行的开头,覆盖前面的字符,并分别在控制台上打印ijkl。 因此,如果您使用的是\r\n,请尝试使用'System.out.println',因为它将打印新行中的文字,尽管它仍然会首先将光标移动到行的开头。但它会在第二行隐式打印字符


有关详细信息,请参阅

以查看\r和\n之间的区别。您必须从命令提示符运行代码。Eclipse的控制台和其他IDE的类似控制台不会模拟完整终端的行为,并且会移动到下一行\r和\n。但是,在命令行上,\r只会将光标移回当前行的开头。

什么。。。?我使用了你的代码,得到了预期的输出。嗯,您的当前输出和预期输出都很奇怪……您使用的终端不会将“\r”回车转换为换行符。因此,光标三次返回到行的开头,并覆盖已经存在的内容。噢。我在Intellij IDE和普通comand提示符中都使用了相同的输出@JR593您能解释一下为了获得输出需要做哪些更改吗?正如Anus Kaleem所说,结果取决于系统。通常,\r表示在行首返回。因此,它不允许您在输出中向上移动。也许你可以使用其他大师的技巧,但这完全取决于你的操作系统。
abcd
efgh
←[0;0Hijkl