Java 回车 return \r 似乎无法正常工作

Java carriage return \r doesn't seem to work correctly

这是我的 java 代码:

// file name is Strings.java
public class Main {
    public static void main(String[] args){
        String txt = "Hello\rWorld!";
        System.out.println(txt);

        String txt2 = "Trying\rthis";
        System.out.println(txt2);
    } 
}

我试着从我的终端执行它,看到了这个:

$ java Strings.java 
World!
thisng

我也试过从Visual Studio代码执行这个,结果相同。所以输出与 this tutorial 中所写的不同。有人可以告诉我为什么吗?谢谢!

这取决于操作系统:Linux (\n), Mac (\r), Windows (\r\n) .都有不同的 new line 符号。参见 Adding a Newline Character to a String in Java

要获得实际组合,请使用:

System.lineSeparator()

根据你的例子:

System.out.println("Hello" + System.lineSeparator() + "World!");
System.out.println("Trying" + System.lineSeparator() + "this");

输出:

$ java Strings.java 
Hello
World!
Trying
World!
this

这有点难看,但是一个通用的解决方案。

P.S. 作为替代方案,您可以使用 System.out.format() 代替:

System.out.format("Hello%nWorld!%n");
System.out.format("Trying%nthis%n");

P.P.S. 我认为一般来说最好构建一个行列表并使用 System.out.println():

Arrays.asList("Hello", "World!").forEach(System.out::println);
Arrays.asList("Trying", "this!").forEach(System.out::println);

您还可以将 format%n 一起使用,后者已被平台行分隔符取代,因此可以使用:

System.out.format("Hello%nWorld!%n");