[英]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.