如何更新java中的控制台输出?

时间:2018-05-21 07:27:20

标签: java string windows escaping unicode-escapes

我必须更新我的控制台。

  

以下是一个示例代码:

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操作系统中运行

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

谢谢大家。

2 个答案:

答案 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只会将光标移回当前行的开头。