在新行中打印,Java

55

我有以下代码:

    System.out.println(" | 1  2  3  4  5  6  7  8  9");
    System.out.println("----------------------------");
    System.out.println("");
我使用println来创建新的一行。是否可以使用\n或\r实现同样的效果?我尝试在第二个println语句中添加\n,然后使用print方法继续打印,但\n并没有创建新的一行。
有任何想法?

11
反复调用 System.out.println(); :P - BoltClock
3
我想知道为什么你有问题只是简单地写下 System.out.println("\n)";。 "\n" 在 C/C++/C# 和 Java 中都被视为转义序列。 - Malakai
12个回答

90
    String newLine = System.getProperty("line.separator");//This will retrieve line separator dependent on OS.

    System.out.println("line 1" + newLine + "line2");

29
自Java 7开始,您可以使用System.lineSeparator()方法。http://docs.oracle.com/javase/7/docs/api/java/lang/System.html#lineSeparator%28%29 - Marc-Andre
1
System.out.println(); 被看作是低端的吗?这不是做同样的事情吗?这是我在Java的第二天,来寻找最佳实践。 - Dan
它的功能与原来相同,只是在末尾添加了行分隔符。 - jmj
太好了!这对我来说真的很有用。 - Nyein Mon Soe

35
System.out.println("hello"+"\n"+"world");

14
您最好的选择是使用:

Your best shot would be with

String.format("%n")
或者
System.out.printf("%n");

这段代码应该会根据当前平台打印一个换行符,因此非常适合控制台打印。

如果你正在向文件中打印,则需要视情况而定。


这绝对是最好的答案,因为它解决了讨论中提到的两个问题:
  1. 平台和2. Java 版本。
- tortal

9

它会创建一个新行。尝试:

System.out.println("---\n###");

1
过去,苹果Mac需要使用'\r'来分隔行,因此最好编写系统无关的代码,可以查看我的解决方案。 - jmj
他在谈论“新行”。如果他要求“新行+回车符”,我会指向\r\n :) 如果我们要挑剔的话,那么我建议使用StringBuilder而不是连接字符串。 - biasedbit
2
对于"line 1" + newLine + "line2",显式使用StringBuilder反而会起到反作用。编译器可以自行进行优化。 - Thilo

9
您应该使用内置的行分隔符。其优点是您无需关心您的代码运行在哪个系统上,它将会正常工作。
自Java 1.7开始。
System.lineSeparator()

Java 1.7之前

System.getProperty("line.separator")

7

您可以尝试添加\r\n而不是仅有的\n。根据您的操作系统和输出查看方式,这可能很重要。


5

\n 在 Java 中代表换行。在 \n 前后不要使用空格。

例如:打印 It creates\na new line 的输出结果为:

It creates
a new line.


1
在哪里可以找到使用Java中的\n会使用正确的换行符,例如Windows上的\r\n的说明? - simpleuser

1

由于您使用的是Windows系统,所以请使用\r\n(回车+换行)而不是\n。


0
//Case1:
System.out.println(" 1  2  3  4  5  6  7  8  9" + "\n" + "----------------------------");

//Case2:
System.out.printf(" 1  2  3  4  5  6  7  8  9" + "\n" + "----------------------------");

//Case3:
System.out.print(" 1  2  3  4  5  6  7  8  9" + "\n" + "----------------------------");

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接