我必须更新我的控制台。
以下是一个示例代码:
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
虽然我尝试在线编译器上面的代码工作正常。 see here
但它无法在Windows和Linux操作系统中运行
请告诉我为了获得预期的输出我必须做出哪些改变。
谢谢大家。
答案 0 :(得分:0)
您需要了解字面值\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'因为它会在新行中打印文字,虽然它仍然会将光标移动到行的开头,首先。但它会隐含地在第二行打印字符。
有关详细信息,请参阅this question
答案 1 :(得分:0)
要查看\ r和\ n之间的区别,必须从命令提示符运行代码。 Eclipse的控制台(和其他IDE类似)不会模拟完整终端的行为,并将移动到\ r和\ n的下一行。但是,在命令行上,\ r \ n只会将光标移回当前行的开头。