繁体   English   中英

如何在Java中更新控制台输出?

[英]How to Update the console output in java?

我必须更新控制台。

这是示例代码:

public class Tester {
    public static void main(String[] args) {
        System.out.print("abcd\n");
        System.out.print("efgh");
        System.out.print("\r\r\rijkl");
}
}

我的输出:

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 OS中不起作用

请告诉我,我必须进行哪些更改才能获得预期的输出。

谢谢你们。

您需要了解字符文字\\n\\r之间的区别。 它因系统而异。 虽然两者的用法相似,但它们的工作方式却不同。 \\r用作回车。 它只是将光标推回到行的开头。 在您的情况下,它完全是在模仿相同的场景。

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

有关更多信息,请参阅此问题

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM